34cc1d86

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Add a differential against iets and record what it found

iets (https://github.com/numtide/iets) is a whole Nix client rather than an
evaluator, and one of its subcommands walks a jobset the way this tool does.
So the question it raises is not whether another evaluator fits under this
C++ wrapper but whether the wrapper is needed, which is a different question
from the one docs/fix-evaluator.md answered.

bench/jobs-root.nix is this tool's discovery root as a function, so
`iets eval-jobs --select` can be asked to walk exactly what this tool walks.
bench/iets-differential.sh compares the two tools' attribute-to-drvPath maps
on real flakes. bench/package-set.nix asks a much larger version of the same
question of a package set, where throughput shows.

They agree on every drvPath over three flakes and 57,927 nixpkgs attributes,
and iets is 4x to 5x faster at less memory on the flake-shaped workload, so
the measurement points the opposite way from fix's. docs/iets-evaluator.md
records that, and the four things a replacement still cannot do.
GitHub

Total

3m08s

Created Started Finished

Time to Start Worker time Duration Time to finish Idle
Config 0s 0s 0s 0s 0s
Eval 0s 9s 5s 6s 0s
Build 4s 8m54s 3m03s 3m08s 0s
Suite 0s 9m04s 3m08s 3m08s 0s

Timeline

Config Eval Build Failed Retried
0s20s40s1m1m20s1m40s2m2m20s2m40s3m