lpg2709/zigdump
Tool to view files in hexadecimal format, like xxd, but in zig
Tool to view files in hexadecimal format, like xxd, but in zig.
Not include all funcitions from xxd, this is only a program to studies.
Setup zig in your machine. Developed on zig 0.12.0
zig build
Executable inside ./zig-out/bin
.
zig build -Doptimize=Debug
Command | Mean [s] | Min [s] | Max [s] | Relative |
---|---|---|---|---|
xxd ./zig |
44.780 ± 1.379 | 42.368 | 47.603 | 1.00 |
./zig-out/bin/zigdump ./zig |
47.753 ± 0.386 | 47.420 | 48.423 | 1.07 ± 0.03 |
zig build -Doptimize=ReleaseSafe
Command | Mean [s] | Min [s] | Max [s] | Relative |
---|---|---|---|---|
xxd ./zig |
44.106 ± 0.868 | 42.578 | 45.315 | 5.94 ± 0.12 |
./zig-out/bin/zigdump ./zig |
7.421 ± 0.033 | 7.371 | 7.466 | 1.00 |
zig build -Doptimize=ReleaseFast
Command | Mean [s] | Min [s] | Max [s] | Relative |
---|---|---|---|---|
xxd ./zig |
47.417 ± 2.821 | 44.298 | 50.783 | 7.12 ± 0.42 |
./zig-out/bin/zigdump ./zig |
6.663 ± 0.033 | 6.619 | 6.704 | 1.00 |
zig build -Doptimize=ReleaseSmall
Command | Mean [s] | Min [s] | Max [s] | Relative |
---|---|---|---|---|
xxd ./zig |
49.071 ± 0.404 | 48.554 | 49.711 | 5.34 ± 0.08 |
./zig-out/bin/zigdump ./zig |
9.187 ± 0.120 | 9.088 | 9.510 | 1.00 |
Only for fun. There is a lot of difference in implemented features
Used hyperfine for benchmark.
All tests made with zig
0.12.0 binary, with the follow script
#!/bin/bash
options=("Debug" "ReleaseSafe" "ReleaseFast" "ReleaseSmall")
bin="./zig"
if [ ! -d "logs" ]; then
mkdir logs
fi
for opt in "${options[@]}"; do
echo ">> Compiling for options ${opt} ..."
zig build -Doptimize=${opt}
if [ "$?" -eq 0 ]; then
echo ">> Making benchmark for ${opt}"
./hyperfine --export-markdown "logs/${opt}.md" --warmup 3 "xxd $bin" "./zig-out/bin/zigdump $bin"
else
echo ">> Compilation fail!"
fi
done
echo ">> Done"
View data in hexadecimal and printable characters
Switch to bits. -b | -bits
Select column size by -c | -cols
Separate the output of evrey byte by a whitespace -g | -groupsize
Stop after writing some octets -l | -len
Start read from byte -s | -seek
Hexa output in uppercase letters -u
Maybe in the future, but not now?