hexdump performance test, part 1

spoiler alert: it's slow as molasses

part 2 will be presented at a later date

(yes, please don't fill 8GB of memory with
random data and hexdump it)

Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2026-03-29 13:23:31 +01:00
parent cec3de5c9e
commit b70ee41c5c
3 changed files with 24 additions and 6 deletions
+17 -1
View File
@@ -50,6 +50,22 @@ hextonum(char ch_s)
}
/* basically hexdump -C */
/*
TODO: optimise this
write a full util for hexdump
how to optimise:
don't call print tens of thousands of times!
convert the numbers manually, and cache everything
in a BUFSIZ sized buffer, with everything properly
aligned. i worked out that i could fit 79 rows
in a 8KB buffer (1264 bytes of numbers represented
as strings in hex)
this depends on the OS, and would be calculated at
runtime.
then:
don't use printf. just write it to stdout (basically
a simple cat implementation)
*/
void
spew_hex(const void *data, size_t len)
{
@@ -64,7 +80,7 @@ spew_hex(const void *data, size_t len)
for (i = 0; i < len; i += 16) {
printf("%08zx ", i);
printf("%0*zx ", sizeof(size_t) * 2, i);
for (j = 0; j < 16; j++) {