# Suite benchmarks (f00 vs GNU — **per package set**)

Totals are **not** blended across packages. Each set has its own geo mean.

Generated: `2026-07-29T12:59:25Z` · N=15 median · warm-cache spawn-inclusive median wall + separate children-rusage CPU (no RSS); suite geos are spawn-inclusive — multi-MiB engines proved by make hot

Host: x86_64 · Linux 6.17.0-1020-azure

## Package totals (wall and CPU are separate averages)

| Package | Tools timed | Wall geo | Wall wins | CPU geo | CPU wins |
|---------|------------:|---------:|----------:|--------:|---------:|
| **GNU coreutils** (`coreutils`) | 91 | **2.131×** | 90/91 | **2.3×** | 90/91 |
| **GNU grep** (`grep`) | 3 | **2.26×** | 3/3 | **2.361×** | 3/3 |
| **GNU findutils** (`findutils`) | 2 | **2.853×** | 2/2 | **2.988×** | 2/2 |
| **GNU diffutils** (`diffutils`) | 4 | **1.931×** | 4/4 | **1.974×** | 4/4 |

## GNU coreutils

**Wall:** 2.1× wall vs GNU coreutils · **CPU:** 2.3× CPU vs GNU coreutils

| Tool | Command (f00) | GNU wall | f00 wall | Wall × | GNU CPU | f00 CPU | CPU × |
|------|---------------|---------:|---------:|-------:|--------:|--------:|------:|
| `true` | `f00-true --core` | 0.444 | **0.149** | **2.97×** | 0.381 | **0.112** | **3.40×** |
| `false` | `f00-false --core` | 0.379 | **0.145** | **2.61×** | 0.340 | **0.110** | **3.09×** |
| `basename` | `f00-basename --core /usr/bin/ls` | 0.539 | **0.147** | **3.66×** | 0.502 | **0.114** | **4.40×** |
| `dirname` | `f00-dirname --core /usr/bin/ls` | 0.576 | **0.150** | **3.83×** | 0.534 | **0.114** | **4.68×** |
| `echo` | `f00-echo --core hi` | 0.536 | **0.257** | **2.08×** | 0.498 | **0.221** | **2.25×** |
| `pwd` | `f00-pwd --core` | 0.546 | **0.250** | **2.19×** | 0.509 | **0.215** | **2.37×** |
| `nproc` | `f00-nproc --core` | 0.577 | **0.148** | **3.91×** | 0.535 | **0.114** | **4.69×** |
| `whoami` | `f00-whoami --core` | 0.610 | **0.151** | **4.03×** | 0.564 | **0.118** | **4.78×** |
| `uname` | `f00-uname --core -s` | 0.563 | **0.273** | **2.06×** | 0.518 | **0.232** | **2.23×** |
| `id` | `f00-id --core -u` | 0.675 | **0.256** | **2.63×** | 0.633 | **0.218** | **2.90×** |
| `date` | `f00-date --core -u +%Y` | 0.584 | **0.259** | **2.25×** | 0.546 | **0.226** | **2.42×** |
| `printenv` | `f00-printenv --core PATH` | 0.538 | **0.252** | **2.14×** | 0.506 | **0.216** | **2.34×** |
| `printf` | `f00-printf --core %s world` | 0.560 | **0.251** | **2.23×** | 0.520 | **0.216** | **2.41×** |
| `factor` | `f00-factor --core 12` | 0.585 | **0.350** | **1.67×** | 0.550 | **0.309** | **1.78×** |
| `numfmt` | `f00-numfmt --core --to=si 1000` | 0.551 | **0.348** | **1.58×** | 0.520 | **0.308** | **1.69×** |
| `expr` | `f00-expr --core 1 + 1` | 0.593 | **0.347** | **1.71×** | 0.549 | **0.307** | **1.79×** |
| `seq` | `f00-seq --core 1 5` | 0.566 | **0.245** | **2.31×** | 0.532 | **0.212** | **2.51×** |
| `cat` | `f00-cat --core fixture.txt` | 0.562 | **0.171** | **3.29×** | 0.526 | **0.137** | **3.84×** |
| `wc` | `f00-wc --core -l fixture.txt` | 0.573 | **0.317** | **1.81×** | 0.538 | **0.282** | **1.91×** |
| `head` | `f00-head --core -n 3 fixture.txt` | 0.562 | **0.271** | **2.07×** | 0.526 | **0.237** | **2.22×** |
| `tail` | `f00-tail --core -n 3 fixture.txt` | 0.562 | **0.305** | **1.84×** | 0.529 | **0.265** | **2.00×** |
| `nl` | `f00-nl --core fixture.txt` | 0.634 | **0.580** | **1.09×** | 0.593 | **0.542** | **1.09×** |
| `od` | `f00-od --core -An -tx1 -N8 fixture.txt` | 0.638 | **0.461** | **1.38×** | 0.544 | **0.368** | **1.48×** |
| `cut` | `f00-cut --core -d: -f1 /etc/passwd` | 0.670 | **0.429** | **1.56×** | 0.586 | **0.350** | **1.67×** |
| `tr` | `f00-tr --core a-z A-Z` | 0.683 | **0.432** | **1.58×** | 0.561 | **0.321** | **1.75×** |
| `sort` | `f00-sort --core fixture.txt` | 1.096 | **1.019** | **1.08×** | 1.048 | **0.981** | **1.07×** |
| `uniq` | `f00-uniq --core a.txt` | 0.615 | **0.572** | **1.07×** | 0.579 | **0.533** | **1.09×** |
| `paste` | `f00-paste --core a.txt b.txt` | 0.631 | **0.567** | **1.11×** | 0.595 | **0.532** | **1.12×** |
| `comm` | `f00-comm --core -12 a.txt b.txt` | 0.679 | **0.466** | **1.46×** | 0.639 | **0.433** | **1.48×** |
| `join` | `f00-join --core a.txt b.txt` | 13.133 | **0.483** | **27.17×** | 13.061 | **0.451** | **28.96×** |
| `base64` | `f00-base64 --core fixture.txt` | 0.589 | **0.443** | **1.33×** | 0.550 | **0.407** | **1.35×** |
| `base32` | `f00-base32 --core fixture.txt` | 0.576 | **0.401** | **1.44×** | 0.543 | **0.370** | **1.47×** |
| `basenc` | `f00-basenc --core --base64 fixture.txt` | 0.611 | **0.463** | **1.32×** | 0.567 | **0.430** | **1.32×** |
| `md5sum` | `f00-md5sum --core fixture.txt` | 0.898 | **0.338** | **2.66×** | 0.864 | **0.307** | **2.81×** |
| `sha1sum` | `f00-sha1sum --core fixture.txt` | 0.899 | **0.365** | **2.47×** | 0.864 | **0.330** | **2.62×** |
| `sha224sum` | `f00-sha224sum --core fixture.txt` | 0.904 | **0.424** | **2.13×** | 0.865 | **0.384** | **2.25×** |
| `sha256sum` | `f00-sha256sum --core fixture.txt` | 0.885 | **0.409** | **2.16×** | 0.851 | **0.372** | **2.29×** |
| `sha384sum` | `f00-sha384sum --core fixture.txt` | 0.911 | **0.349** | **2.61×** | 0.868 | **0.313** | **2.77×** |
| `sha512sum` | `f00-sha512sum --core fixture.txt` | 0.894 | **0.349** | **2.56×** | 0.858 | **0.313** | **2.74×** |
| `b2sum` | `f00-b2sum --core fixture.txt` | 0.619 | **0.320** | **1.93×** | 0.580 | **0.285** | **2.04×** |
| `cksum` | `f00-cksum --core fixture.txt` | 0.900 | **0.325** | **2.77×** | 0.862 | **0.291** | **2.96×** |
| `sum` | `f00-sum --core fixture.txt` | 0.606 | **0.334** | **1.81×** | 0.569 | **0.297** | **1.92×** |
| `ls` | `f00-ls --core -1 dir` | 0.746 | **0.385** | **1.94×** | 0.704 | **0.349** | **2.02×** |
| `dir` | `f00-dir --core -1 dir` | 0.724 | **0.269** | **2.69×** | 0.683 | **0.231** | **2.96×** |
| `vdir` | `f00-vdir --core -1 dir` | 0.743 | **0.265** | **2.80×** | 0.706 | **0.229** | **3.08×** |
| `stat` | `f00-stat --core -c %s fixture.txt` | 0.706 | **0.253** | **2.80×** | 0.665 | **0.219** | **3.04×** |
| `realpath` | `f00-realpath --core .` | 0.553 | **0.264** | **2.09×** | 0.513 | **0.226** | **2.27×** |
| `readlink` | `f00-readlink --core /proc/self/exe` | 0.544 | **0.258** | **2.11×** | 0.509 | **0.222** | **2.29×** |
| `df` | `f00-df --core -P /` | 0.651 | **0.281** | **2.32×** | 0.614 | **0.243** | **2.53×** |
| `du` | `f00-du --core -s dir` | 0.622 | **0.284** | **2.19×** | 0.586 | **0.252** | **2.33×** |
| `dircolors` | `f00-dircolors --core -p` | 0.568 | **0.251** | **2.26×** | 0.530 | **0.215** | **2.47×** |
| `env` | `f00-env --core -i true` | 0.808 | **0.320** | **2.52×** | 0.770 | **0.263** | **2.93×** |
| `timeout` | `f00-timeout --core 5 true` | 1.129 | **0.396** | **2.85×** | 1.070 | **0.361** | **2.96×** |
| `nice` | `f00-nice --core true` | 0.856 | **0.249** | **3.44×** | 0.821 | **0.216** | **3.80×** |
| `nohup` | `f00-nohup --core true` | 0.868 | **0.255** | **3.40×** | 0.832 | **0.218** | **3.82×** |
| `sleep` | `f00-sleep --core 0` | 0.600 | **0.315** | **1.90×** | 0.512 | **0.224** | **2.29×** |
| `test` | `f00-test --core -f fixture.txt` | 0.552 | **0.251** | **2.20×** | 0.511 | **0.216** | **2.37×** |
| `pathchk` | `f00-pathchk --core ok-name` | 0.539 | **0.246** | **2.19×** | 0.499 | **0.212** | **2.35×** |
| `mktemp` | `f00-mktemp --core -u` | 0.560 | **0.253** | **2.21×** | 0.521 | **0.219** | **2.38×** |
| `sync` | `f00-sync --core` | 0.770 | **0.452** | **1.70×** | 0.571 | **0.269** | **2.12×** |
| `uptime` | `f00-uptime --core` | 1.047 | **0.287** | **3.64×** | 1.009 | **0.236** | **4.28×** |
| `hostid` | `f00-hostid --core` | 0.634 | **0.254** | **2.50×** | 0.592 | **0.217** | **2.73×** |
| `logname` | `f00-logname --core` | 0.561 | **0.250** | **2.25×** | 0.518 | **0.215** | **2.41×** |
| `tty` | `f00-tty --core` | 0.568 | **0.147** | **3.87×** | 0.524 | **0.112** | **4.68×** |
| `groups` | `f00-groups --core` | 0.645 | **0.269** | **2.39×** | 0.596 | **0.235** | **2.54×** |
| `arch` | `f00-arch --core` | 0.551 | **0.253** | **2.18×** | 0.515 | **0.219** | **2.35×** |
| `hostname` | `f00-hostname --core` | 0.406 | **0.256** | **1.58×** | 0.365 | **0.220** | **1.66×** |
| `users` | `f00-users --core` | 0.576 | **0.275** | **2.09×** | 0.535 | **0.237** | **2.26×** |
| `who` | `f00-who --core` | 0.565 | **0.252** | **2.24×** | 0.527 | **0.217** | **2.43×** |
| `pinky` | `f00-pinky --core` | 0.576 | **0.260** | **2.22×** | 0.542 | **0.225** | **2.41×** |
| `fold` | `f00-fold --core -w 40 fixture.txt` | 0.635 | **0.431** | **1.47×** | 0.588 | **0.391** | **1.50×** |
| `fmt` | `f00-fmt --core -w 40 fixture.txt` | 0.703 | **0.396** | **1.77×** | 0.666 | **0.362** | **1.84×** |
| `expand` | `f00-expand --core fixture.txt` | 0.597 | **0.415** | **1.44×** | 0.560 | **0.378** | **1.48×** |
| `unexpand` | `f00-unexpand --core fixture.txt` | 0.596 | **0.465** | **1.28×** | 0.559 | **0.429** | **1.30×** |
| `tac` | `f00-tac --core fixture.txt` | 0.583 | **0.557** | **1.05×** | 0.548 | **0.524** | **1.05×** |
| `rev` | `f00-rev --core fixture.txt` | 0.844 | **0.619** | **1.36×** | 0.801 | **0.578** | **1.39×** |
| `ptx` | `f00-ptx --core -A fixture.txt` | 1.222 | **0.424** | **2.89×** | 1.173 | **0.388** | **3.02×** |
| `pr` | `f00-pr --core -t fixture.txt` | 0.730 | **0.563** | **1.30×** | 0.692 | **0.529** | **1.31×** |
| `shuf` | `f00-shuf --core fixture.txt` | 0.597 | **0.727** | **0.82×** | 0.558 | **0.670** | **0.83×** |
| `tsort` | `f00-tsort --core` | 0.561 | **0.541** | **1.04×** | 0.520 | **0.497** | **1.05×** |
| `tee` | `f00-tee --core tee.out` | 0.642 | **0.308** | **2.09×** | 0.591 | **0.260** | **2.27×** |
| `split` | `f00-split --core -l 50 fixture.txt out` | 0.787 | **0.539** | **1.46×** | 0.737 | **0.483** | **1.53×** |
| `csplit` | `f00-csplit --core -f xx fixture 5` | 0.731 | **0.356** | **2.05×** | 0.674 | **0.322** | **2.09×** |
| `chmod` | `f00-chmod --core 644 fixture.txt` | 0.656 | **0.261** | **2.51×** | 0.606 | **0.225** | **2.69×** |
| `touch` | `f00-touch --core touched` | 0.563 | **0.257** | **2.19×** | 0.526 | **0.223** | **2.36×** |
| `truncate` | `f00-truncate --core -s 0 trunc` | 0.569 | **0.257** | **2.21×** | 0.531 | **0.223** | **2.38×** |
| `cp` | `f00-cp --core fixture.txt cp.out` | 0.881 | **0.328** | **2.69×** | 0.836 | **0.286** | **2.92×** |
| `dd` | `f00-dd --core if=fixture of=dd.out bs=4k count=1` | 0.620 | **0.316** | **1.96×** | 0.579 | **0.272** | **2.13×** |
| `install` | `f00-install --core -m 644 fixture inst.out` | 0.861 | **0.313** | **2.75×** | 0.828 | **0.267** | **3.10×** |
| `yes` | `f00-yes --core --version` | 0.547 | **0.141** | **3.88×** | 0.511 | **0.109** | **4.69×** |
| `[` | `f00-[ --core -f fixture.txt` | 0.538 | **0.254** | **2.11×** | 0.502 | **0.215** | **2.33×** |

## GNU grep

**Wall:** 2.3× wall vs GNU grep · **CPU:** 2.4× CPU vs GNU grep

| Tool | Command (f00) | GNU wall | f00 wall | Wall × | GNU CPU | f00 CPU | CPU × |
|------|---------------|---------:|---------:|-------:|--------:|--------:|------:|
| `grep` | `f00-grep --core -F hello fixture.txt` | 0.721 | **0.374** | **1.93×** | 0.683 | **0.336** | **2.03×** |
| `fgrep` | `f00-fgrep --core hello fixture.txt` | 1.171 | **0.399** | **2.93×** | 1.127 | **0.366** | **3.08×** |
| `egrep` | `f00-egrep --core h.llo fixture.txt` | 1.178 | **0.578** | **2.04×** | 1.140 | **0.542** | **2.10×** |

## GNU findutils

**Wall:** 2.9× wall vs GNU findutils · **CPU:** 3× CPU vs GNU findutils

| Tool | Command (f00) | GNU wall | f00 wall | Wall × | GNU CPU | f00 CPU | CPU × |
|------|---------------|---------:|---------:|-------:|--------:|--------:|------:|
| `find` | `f00-find --core -maxdepth 1 -name '*.txt' /tmp/f00-suite-bench.1s6zvskp/dir` | 0.789 | **0.452** | **1.75×** | 0.750 | **0.418** | **1.79×** |
| `xargs` | `f00-xargs --core -n 2` | 2.102 | **0.452** | **4.65×** | 2.020 | **0.406** | **4.98×** |

## GNU diffutils

**Wall:** 1.9× wall vs GNU diffutils · **CPU:** 2× CPU vs GNU diffutils

| Tool | Command (f00) | GNU wall | f00 wall | Wall × | GNU CPU | f00 CPU | CPU × |
|------|---------------|---------:|---------:|-------:|--------:|--------:|------:|
| `diff` | `f00-diff --core -u a.txt b.txt` | 0.695 | **0.542** | **1.28×** | 0.648 | **0.507** | **1.28×** |
| `cmp` | `f00-cmp --core fixture.txt fixture.txt` | 0.601 | **0.367** | **1.64×** | 0.555 | **0.334** | **1.66×** |
| `diff3` | `f00-diff3 --core a.txt b.txt a.txt` | 2.258 | **0.689** | **3.28×** | 2.212 | **0.650** | **3.40×** |
| `sdiff` | `f00-sdiff --core a.txt b.txt` | 1.265 | **0.625** | **2.02×** | 1.211 | **0.577** | **2.10×** |

Ratios wall/CPU = GNU÷f00 (**>1 means f00 wins**). Wall and CPU geos are computed separately — not one blended score. CPU = user+sys (children rusage).

Full machine-readable data: [suite.json](suite.json)

