This was run on quiet system with an i9-13900K, 96 GB of DDR5 RAM, and several NVMe SSDs in a ZRAID0 with ZFS. Memory usage never required swapping with hyperfine running two warmups, ZFS ARC and L2ARC effectively cached everything, so IO was not a bottleneck. While it is unlikely there was any thermal throttling as this was largely single-core and temps stayed under 30 C, it is possible.
Additionally, I did not disable boost clocks, set affinity or priority for the process, or other optimizations which could have been done to reduce noise in the results.
They're presented without any liability or guarantee of accuracy, etc.
The workload used isn't representative of a typical Nix evaluation (essentially recursing over Nixpkgs to build a list of lists of attribute paths to all derivations which successfully evaluate), so the numbers aren't indicative of performance each build of Nix would see in practice.
- Nix rev
ab5a9cf2db31d3840a801385349b9d23deb29ecc - Nixpkgs rev
e4666afa18982a52c4310380007ecd7ba43f1028
As a reminder, by default evaluation will use the daemon on multi-user installs, will not set the store to read-only, and will perform GC. Here are the results of the benchmarks for each executable under these conditions (keep in mind nix-meson-O3-lto-no-gc was built without GC):
TODO: Why were the results so noisy?
-
nix-default:Benchmark 1: nix-daemon Time (mean ± σ): 11.694 s ± 0.275 s [User: 9.886 s, System: 1.405 s] Range (min … max): 10.954 s … 12.020 s 10 runs
-
nix-meson-O3:Benchmark 1: nix-daemon Time (mean ± σ): 11.813 s ± 0.104 s [User: 10.018 s, System: 1.392 s] Range (min … max): 11.670 s … 11.954 s 10 runs
-
nix-meson-O3-lto:Benchmark 1: nix-daemon Time (mean ± σ): 11.590 s ± 0.083 s [User: 9.821 s, System: 1.369 s] Range (min … max): 11.469 s … 11.707 s 10 runs
-
nix-meson-O3-lto-no-gc:Benchmark 1: nix-daemon-no-gc Time (mean ± σ): 7.080 s ± 0.047 s [User: 5.099 s, System: 1.598 s] Range (min … max): 7.027 s … 7.181 s 10 runs
Looking at the results of the benchmarks using the local store (so avoiding the daemon for file operations), with GC disabled, and with the read-only flag set, the following can be observed:
-
nix-default:Benchmark 8: nix-no-daemon-no-gc-read-only Time (mean ± σ): 6.963 s ± 0.048 s [User: 5.214 s, System: 1.728 s] Range (min … max): 6.926 s … 7.065 s 10 runs
-
nix-meson-O3:Benchmark 8: nix-no-daemon-no-gc-read-only Time (mean ± σ): 6.958 s ± 0.058 s [User: 5.235 s, System: 1.703 s] Range (min … max): 6.907 s … 7.076 s 10 runs
-
nix-meson-O3-lto:Benchmark 8: nix-no-daemon-no-gc-read-only Time (mean ± σ): 6.813 s ± 0.054 s [User: 5.100 s, System: 1.694 s] Range (min … max): 6.775 s … 6.961 s 10 runs
-
nix-meson-O3-lto-no-gc:Benchmark 4: nix-no-daemon-no-gc-read-only Time (mean ± σ): 6.494 s ± 0.025 s [User: 4.913 s, System: 1.564 s] Range (min … max): 6.466 s … 6.549 s 10 runs
As a reminder, by default evaluation will use the daemon on multi-user installs, will not set the store to read-only, and will perform GC.
Marginal differences.
It would be interested to explore PGO and post-link optimizations such as BOLT.
TODO: Add analysis for overhead involved in using the daemon/not passing --read-only as well as for GC.
Nix as built with a fresh clone and nix build .#nix.
$ nix path-info -rSsh ./nix-default
/nix/store/19avl2s0rd4whz3b0n118qdrv6yr3b0g-xgcc-13.2.0-libgcc 155.8 KiB 155.8 KiB
/nix/store/503h8rdwzj12dh0fs1b6y643qm26vqsb-libunistring-1.1 1.7 MiB 1.7 MiB
/nix/store/ya4arqpf6vwbq4msi449314kqbhdb4l4-libidn2-2.3.7 352.7 KiB 2.1 MiB
/nix/store/87848rvrg5c7jmplpi0iapvbxyj9kfid-glibc-2.39-52 28.7 MiB 31.0 MiB
/nix/store/b5248mzca3qjhjvck1vw3n6gg5mdhkz8-aws-c-common-0.9.17 1.0 MiB 32.0 MiB
/nix/store/0wb2jfh9zcdhh2maw76vrcd69yn56hw2-aws-c-sdkutils-0.1.16 150.4 KiB 32.1 MiB
/nix/store/dqrip0sx49kz9l6p8smq09aghas49s3b-gcc-13.2.0-libgcc 155.8 KiB 155.8 KiB
/nix/store/40yjzm7r5ki59kkk9423dnwbm86x7pyd-gcc-13.2.0-lib 8.7 MiB 39.8 MiB
/nix/store/0wq0r67l1lixwiwb7zyjbpl3yff5nbxw-boehm-gc-8.2.6 308.9 KiB 40.1 MiB
/nix/store/2k9k3q1vk8z6w7743k6nb22vnb05xv06-zlib-1.3.1 125.2 KiB 31.1 MiB
/nix/store/2vdxsvrjrf1bgznbb9wga1rshpxc658a-publicsuffix-list-0-unstable-2024-01-07 302.5 KiB 302.5 KiB
/nix/store/65ysp6n926dmcxdsg88q4qkw1kid7dih-attr-2.5.2 90.6 KiB 31.1 MiB
/nix/store/39jg2qg6jlfm4hdc8j61d09skxg4gfw0-acl-2.3.2 125.2 KiB 31.2 MiB
/nix/store/q46sbq9pgf58xb8zx5vlkbv96kidglxc-openssl-3.0.14 6.2 MiB 37.2 MiB
/nix/store/8ivnsqp0wb8pna7rm31csdcn5aykdkqh-s2n-tls-1.4.12 1.2 MiB 38.4 MiB
/nix/store/dyxmqfpx08c2rhxg5kc83qa0qdxhzhfk-aws-c-cal-0.6.12 143.1 KiB 38.3 MiB
/nix/store/mldkgahcv5kg2kv19dc8zqmz5y702k01-aws-c-io-0.14.7 604.5 KiB 40.1 MiB
/nix/store/ydmbcr9ca5sdhvlx8icwvj454xvp6dd8-aws-checksums-0.1.18 61.8 KiB 32.0 MiB
/nix/store/5d4a4am9gb7ia79xfjcdbf2y3b9kwknn-aws-c-event-stream-0.4.2 169.5 KiB 40.3 MiB
/nix/store/96dj8i2gxxn31nw84r94h7bbfbg46rkw-pcre-8.45 513.3 KiB 31.5 MiB
/nix/store/k52i6nkc80lxr7f2axdrvdp3cbnwxmk7-libgit2-20240516095848-lib 1.5 MiB 39.3 MiB
/nix/store/m5lk8pdk0sz0pkf3kjzk0j2b7gargzzx-aws-c-compression-0.2.18 31.6 KiB 32.0 MiB
/nix/store/5xvdvbb7vzyazmhw57yhwwch8kqwjfyk-aws-c-http-0.8.1 601.5 KiB 40.7 MiB
/nix/store/xhd47fvyzk5gds3d6bnnvhfpqd9hrsvp-aws-c-auth-0.7.18 362.8 KiB 41.2 MiB
/nix/store/bdk3lnfjx46vsh5php2wbxsr9mriyhqb-aws-c-s3-0.5.7 331.7 KiB 41.6 MiB
/nix/store/rpj7hvnzrm4kh45bllm7fgncwmshlhiq-aws-c-mqtt-0.10.4 464.4 KiB 41.2 MiB
/nix/store/c46xzl45zg6225nxy780ccm5bzm9bdc4-aws-crt-cpp-0.26.8 941.5 KiB 52.0 MiB
/nix/store/by2v5cgvm6kkjjfv52fz7vajwgmcfdga-brotli-1.1.0-lib 901.4 KiB 31.8 MiB
/nix/store/g45c2banpvki32fjydbx3wclgcphmsbs-libpsl-0.21.5 79.6 KiB 31.3 MiB
/nix/store/kcc6cnkqm8if32y6hwh9ixpwxba15hkq-nghttp2-1.61.0-lib 219.0 KiB 31.2 MiB
/nix/store/yh9n3w67ivhxkzx9m58cswbaf8nag436-zstd-1.5.6 1.1 MiB 40.9 MiB
/nix/store/ayndm66jniwbm76kprjjng06r4b7ypbw-keyutils-1.6.3-lib 41.6 KiB 31.0 MiB
/nix/store/wckka8fxv4h5hp74cbkhaw3fw7kbvcs1-bash-5.2p26 1.5 MiB 32.5 MiB
/nix/store/z5736fyn17s2mqql62rcznmj5yk5yx15-libkrb5-1.21.3 2.2 MiB 34.8 MiB
/nix/store/zmczdj9cz73g8vfrqkv2hh5fv9achs7v-libssh2-1.11.0 309.8 KiB 37.6 MiB
/nix/store/kw6idhj5b1pmwjg7rnyvrlhg5ffrn1vs-curl-8.7.1 874.1 KiB 53.6 MiB
/nix/store/86b4h0x1i310gglrsjrk093l0g2h26pr-aws-sdk-cpp-1.11.318 5.7 MiB 65.4 MiB
/nix/store/f6afb4jw9g5f94ixw0jn6cl0ah4liy35-sqlite-3.45.3 1.5 MiB 32.6 MiB
/nix/store/p66hqwsh90q1xdb6ss31105rr11s4z9v-busybox-static-x86_64-unknown-linux-musl-1.36.1 212.0 KiB 212.0 KiB
/nix/store/p8pfm2w0sapcyizn9rkgdpllywq05x5n-libseccomp-2.5.5-lib 138.9 KiB 31.1 MiB
/nix/store/8c9vyhad2gxlg4clvaa3zlikv7lsym3s-libsodium-1.0.19 497.5 KiB 31.5 MiB
/nix/store/j8qdcfmjnlqlxk14mh59vcwr6hbznj92-boost-1.81.0 153.8 KiB 39.9 MiB
/nix/store/9g700djj7aqgr3fqq5ji9m8w3n5ip75s-xz-5.4.7 803.6 KiB 31.8 MiB
/nix/store/ddzqsmrcpciq7rm4p70ynj3hi07w88kz-libxml2-2.12.7 1.5 MiB 32.6 MiB
/nix/store/g0gx36d1l273mzhnz7jmq5vvjf6n9r70-bzip2-1.0.8 78.9 KiB 31.0 MiB
/nix/store/mccadsxm3sgrcx2z0b9c8d5wgnlg7a3z-libarchive-3.7.4-lib 887.7 KiB 50.7 MiB
/nix/store/p95ba37n695180m4vjp4mn3j8vd156jr-libcpuid-0.6.5 259.2 KiB 31.2 MiB
/nix/store/xf85qdkmmdfr6z2n2hqw5f1myzvywqhv-nix-util-2.26.0pre 2.4 MiB 54.8 MiB
/nix/store/m7l7q1jf7kdnzrsar3rissmyjrqsvyz3-nix-store-2.26.0pre 5.6 MiB 79.6 MiB
/nix/store/l2cwhsbrilykpg34yvq8xcinj79mhn00-nix-fetchers-2.26.0pre 1.6 MiB 83.1 MiB
/nix/store/y74xl6bwrfl4q80zjv37m08l4hn6h60q-nix-expr-2.26.0pre 3.1 MiB 86.5 MiB
/nix/store/8gvx0zvdc34zc2w39h104akj7kp783ab-nix-flake-2.26.0pre 1.0 MiB 87.5 MiB
/nix/store/ak4z28ld63pp1ivhypy07h1rcr7mz5da-nix-main-2.26.0pre 421.4 KiB 80.0 MiB
/nix/store/isqwk2fj3d87ykqkhgr1513jqlrkymr6-lowdown-1.1.0-lib 275.5 KiB 31.2 MiB
/nix/store/qcwlfkj0yggkfvv43y0bv7wyb35w1dh0-editline-1.17.1 54.4 KiB 31.0 MiB
/nix/store/plxnjc42di5g20as4p7jb0minm3ypqh8-nix-cmd-2.26.0pre 1.1 MiB 89.4 MiB
/nix/store/5mmk1z943xwcvrbbizswk5rrkika4nxr-nix-2.26.0pre20241206_ab5a9cf 4.0 MiB 93.3 MiB
/nix/store/dw4076zxh127ljh4mgfip9lri7gj341m-nix-manual-2.26.0pre20241206_ab5a9cf-man 457.6 KiB 457.6 KiB
/nix/store/6nh1sjzin4kxhscjz3jsrg87k1711wp5-nix-2.26.0pre20241206_ab5a9cf 2.4 KiB 93.8 MiB/etc/profiles/per-user/connorbaker/bin/hyperfine \
--warmup 2 \
--command-name nix-daemon \
'/home/connorbaker/nix/nix-default/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store daemon \
> /dev/null' \
--command-name nix-daemon-no-gc \
'GC_DONT_GC=1 /home/connorbaker/nix/nix-default/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store daemon \
> /dev/null' \
--command-name nix-daemon-read-only \
'/home/connorbaker/nix/nix-default/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store daemon \
--read-only \
> /dev/null' \
--command-name nix-daemon-no-gc-read-only \
'GC_DONT_GC=1 /home/connorbaker/nix/nix-default/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store daemon \
--read-only \
> /dev/null' \
--command-name nix-no-daemon \
'/home/connorbaker/nix/nix-default/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store local \
> /dev/null' \
--command-name nix-no-daemon-read-only \
'/home/connorbaker/nix/nix-default/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store local \
--read-only \
> /dev/null' \
--command-name nix-no-daemon-no-gc \
'GC_DONT_GC=1 /home/connorbaker/nix/nix-default/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store local \
> /dev/null' \
--command-name nix-no-daemon-no-gc-read-only \
'GC_DONT_GC=1 /home/connorbaker/nix/nix-default/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store local \
--read-only \
> /dev/null'
Benchmark 1: nix-daemon
Time (mean ± σ): 11.694 s ± 0.275 s [User: 9.886 s, System: 1.405 s]
Range (min … max): 10.954 s … 12.020 s 10 runs
Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.
Benchmark 2: nix-daemon-no-gc
Time (mean ± σ): 7.528 s ± 0.060 s [User: 5.402 s, System: 1.743 s]
Range (min … max): 7.473 s … 7.680 s 10 runs
Benchmark 3: nix-daemon-read-only
Time (mean ± σ): 11.099 s ± 0.294 s [User: 9.741 s, System: 1.328 s]
Range (min … max): 10.287 s … 11.335 s 10 runs
Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.
Benchmark 4: nix-daemon-no-gc-read-only
Time (mean ± σ): 6.950 s ± 0.047 s [User: 5.211 s, System: 1.719 s]
Range (min … max): 6.914 s … 7.078 s 10 runs
Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.
Benchmark 5: nix-no-daemon
Time (mean ± σ): 11.448 s ± 0.117 s [User: 9.960 s, System: 1.457 s]
Range (min … max): 11.337 s … 11.671 s 10 runs
Benchmark 6: nix-no-daemon-read-only
Time (mean ± σ): 11.143 s ± 0.082 s [User: 9.788 s, System: 1.324 s]
Range (min … max): 11.038 s … 11.283 s 10 runs
Benchmark 7: nix-no-daemon-no-gc
Time (mean ± σ): 7.203 s ± 0.039 s [User: 5.358 s, System: 1.824 s]
Range (min … max): 7.173 s … 7.307 s 10 runs
Benchmark 8: nix-no-daemon-no-gc-read-only
Time (mean ± σ): 6.963 s ± 0.048 s [User: 5.214 s, System: 1.728 s]
Range (min … max): 6.926 s … 7.065 s 10 runs
Summary
nix-daemon-no-gc-read-only ran
1.00 ± 0.01 times faster than nix-no-daemon-no-gc-read-only
1.04 ± 0.01 times faster than nix-no-daemon-no-gc
1.08 ± 0.01 times faster than nix-daemon-no-gc
1.60 ± 0.04 times faster than nix-daemon-read-only
1.60 ± 0.02 times faster than nix-no-daemon-read-only
1.65 ± 0.02 times faster than nix-no-daemon
1.68 ± 0.04 times faster than nix-daemonSame as nix-default, but removed the line in build-utils-meson/common/meson.build which adds -O3 for CPP (per Meson build system's printed warning to use the optimization option instead) and changed default_options in each meson.build file from 'optimization=2' to 'optimization=3'.
NOTE: The closure is 0.8 MB smaller than nix-default.
$ nix path-info -rSsh ./nix-meson-O3
/nix/store/19avl2s0rd4whz3b0n118qdrv6yr3b0g-xgcc-13.2.0-libgcc 155.8 KiB 155.8 KiB
/nix/store/503h8rdwzj12dh0fs1b6y643qm26vqsb-libunistring-1.1 1.7 MiB 1.7 MiB
/nix/store/ya4arqpf6vwbq4msi449314kqbhdb4l4-libidn2-2.3.7 352.7 KiB 2.1 MiB
/nix/store/87848rvrg5c7jmplpi0iapvbxyj9kfid-glibc-2.39-52 28.7 MiB 31.0 MiB
/nix/store/b5248mzca3qjhjvck1vw3n6gg5mdhkz8-aws-c-common-0.9.17 1.0 MiB 32.0 MiB
/nix/store/0wb2jfh9zcdhh2maw76vrcd69yn56hw2-aws-c-sdkutils-0.1.16 150.4 KiB 32.1 MiB
/nix/store/dqrip0sx49kz9l6p8smq09aghas49s3b-gcc-13.2.0-libgcc 155.8 KiB 155.8 KiB
/nix/store/40yjzm7r5ki59kkk9423dnwbm86x7pyd-gcc-13.2.0-lib 8.7 MiB 39.8 MiB
/nix/store/0wq0r67l1lixwiwb7zyjbpl3yff5nbxw-boehm-gc-8.2.6 308.9 KiB 40.1 MiB
/nix/store/8c9vyhad2gxlg4clvaa3zlikv7lsym3s-libsodium-1.0.19 497.5 KiB 31.5 MiB
/nix/store/by2v5cgvm6kkjjfv52fz7vajwgmcfdga-brotli-1.1.0-lib 901.4 KiB 31.8 MiB
/nix/store/j8qdcfmjnlqlxk14mh59vcwr6hbznj92-boost-1.81.0 153.8 KiB 39.9 MiB
/nix/store/2k9k3q1vk8z6w7743k6nb22vnb05xv06-zlib-1.3.1 125.2 KiB 31.1 MiB
/nix/store/65ysp6n926dmcxdsg88q4qkw1kid7dih-attr-2.5.2 90.6 KiB 31.1 MiB
/nix/store/39jg2qg6jlfm4hdc8j61d09skxg4gfw0-acl-2.3.2 125.2 KiB 31.2 MiB
/nix/store/9g700djj7aqgr3fqq5ji9m8w3n5ip75s-xz-5.4.7 803.6 KiB 31.8 MiB
/nix/store/ddzqsmrcpciq7rm4p70ynj3hi07w88kz-libxml2-2.12.7 1.5 MiB 32.6 MiB
/nix/store/g0gx36d1l273mzhnz7jmq5vvjf6n9r70-bzip2-1.0.8 78.9 KiB 31.0 MiB
/nix/store/q46sbq9pgf58xb8zx5vlkbv96kidglxc-openssl-3.0.14 6.2 MiB 37.2 MiB
/nix/store/yh9n3w67ivhxkzx9m58cswbaf8nag436-zstd-1.5.6 1.1 MiB 40.9 MiB
/nix/store/mccadsxm3sgrcx2z0b9c8d5wgnlg7a3z-libarchive-3.7.4-lib 887.7 KiB 50.7 MiB
/nix/store/p95ba37n695180m4vjp4mn3j8vd156jr-libcpuid-0.6.5 259.2 KiB 31.2 MiB
/nix/store/bjbcj29qj83cp3znzih3w0hxa5lpf9zn-nix-util-2.26.0pre 2.3 MiB 54.7 MiB
/nix/store/8ivnsqp0wb8pna7rm31csdcn5aykdkqh-s2n-tls-1.4.12 1.2 MiB 38.4 MiB
/nix/store/dyxmqfpx08c2rhxg5kc83qa0qdxhzhfk-aws-c-cal-0.6.12 143.1 KiB 38.3 MiB
/nix/store/mldkgahcv5kg2kv19dc8zqmz5y702k01-aws-c-io-0.14.7 604.5 KiB 40.1 MiB
/nix/store/ydmbcr9ca5sdhvlx8icwvj454xvp6dd8-aws-checksums-0.1.18 61.8 KiB 32.0 MiB
/nix/store/5d4a4am9gb7ia79xfjcdbf2y3b9kwknn-aws-c-event-stream-0.4.2 169.5 KiB 40.3 MiB
/nix/store/m5lk8pdk0sz0pkf3kjzk0j2b7gargzzx-aws-c-compression-0.2.18 31.6 KiB 32.0 MiB
/nix/store/5xvdvbb7vzyazmhw57yhwwch8kqwjfyk-aws-c-http-0.8.1 601.5 KiB 40.7 MiB
/nix/store/xhd47fvyzk5gds3d6bnnvhfpqd9hrsvp-aws-c-auth-0.7.18 362.8 KiB 41.2 MiB
/nix/store/bdk3lnfjx46vsh5php2wbxsr9mriyhqb-aws-c-s3-0.5.7 331.7 KiB 41.6 MiB
/nix/store/rpj7hvnzrm4kh45bllm7fgncwmshlhiq-aws-c-mqtt-0.10.4 464.4 KiB 41.2 MiB
/nix/store/c46xzl45zg6225nxy780ccm5bzm9bdc4-aws-crt-cpp-0.26.8 941.5 KiB 52.0 MiB
/nix/store/2vdxsvrjrf1bgznbb9wga1rshpxc658a-publicsuffix-list-0-unstable-2024-01-07 302.5 KiB 302.5 KiB
/nix/store/g45c2banpvki32fjydbx3wclgcphmsbs-libpsl-0.21.5 79.6 KiB 31.3 MiB
/nix/store/kcc6cnkqm8if32y6hwh9ixpwxba15hkq-nghttp2-1.61.0-lib 219.0 KiB 31.2 MiB
/nix/store/ayndm66jniwbm76kprjjng06r4b7ypbw-keyutils-1.6.3-lib 41.6 KiB 31.0 MiB
/nix/store/wckka8fxv4h5hp74cbkhaw3fw7kbvcs1-bash-5.2p26 1.5 MiB 32.5 MiB
/nix/store/z5736fyn17s2mqql62rcznmj5yk5yx15-libkrb5-1.21.3 2.2 MiB 34.8 MiB
/nix/store/zmczdj9cz73g8vfrqkv2hh5fv9achs7v-libssh2-1.11.0 309.8 KiB 37.6 MiB
/nix/store/kw6idhj5b1pmwjg7rnyvrlhg5ffrn1vs-curl-8.7.1 874.1 KiB 53.6 MiB
/nix/store/86b4h0x1i310gglrsjrk093l0g2h26pr-aws-sdk-cpp-1.11.318 5.7 MiB 65.4 MiB
/nix/store/f6afb4jw9g5f94ixw0jn6cl0ah4liy35-sqlite-3.45.3 1.5 MiB 32.6 MiB
/nix/store/p66hqwsh90q1xdb6ss31105rr11s4z9v-busybox-static-x86_64-unknown-linux-musl-1.36.1 212.0 KiB 212.0 KiB
/nix/store/p8pfm2w0sapcyizn9rkgdpllywq05x5n-libseccomp-2.5.5-lib 138.9 KiB 31.1 MiB
/nix/store/kv6isda7njzh2885xb57rp5cci700hcj-nix-store-2.26.0pre 5.4 MiB 79.1 MiB
/nix/store/3j0p06dbkisvlm583rdlhwpq9i0nfg40-nix-main-2.26.0pre 390.7 KiB 79.5 MiB
/nix/store/96dj8i2gxxn31nw84r94h7bbfbg46rkw-pcre-8.45 513.3 KiB 31.5 MiB
/nix/store/k52i6nkc80lxr7f2axdrvdp3cbnwxmk7-libgit2-20240516095848-lib 1.5 MiB 39.3 MiB
/nix/store/dhl5cx9szy9rsvxjpyhb9qq161jqwmlr-nix-fetchers-2.26.0pre 1.5 MiB 82.7 MiB
/nix/store/rqpp6gss5hv7cina9sj8mxlbma88d863-nix-expr-2.26.0pre 3.0 MiB 85.9 MiB
/nix/store/d2xnj8i0aba6ycl9q8jk32rvis7c6h9f-nix-flake-2.26.0pre 1.0 MiB 86.9 MiB
/nix/store/isqwk2fj3d87ykqkhgr1513jqlrkymr6-lowdown-1.1.0-lib 275.5 KiB 31.2 MiB
/nix/store/qcwlfkj0yggkfvv43y0bv7wyb35w1dh0-editline-1.17.1 54.4 KiB 31.0 MiB
/nix/store/90hq8c88v2lzgbhv2ipknp9hwq4i2wrk-nix-cmd-2.26.0pre 1.1 MiB 88.7 MiB
/nix/store/29dazc548gzxghmb46xyy9qs107afmg0-nix-2.26.0pre20241206_dirty 3.8 MiB 92.5 MiB
/nix/store/dzhpqigzqbh7h5z5w2bzkdmh7wnz430p-nix-manual-2.26.0pre20241206_dirty-man 457.6 KiB 457.6 KiB
/nix/store/4qs97rj5hzw3mmhbsbqznwxh9id9h5aq-nix-2.26.0pre20241206_dirty 2.4 KiB 93.0 MiB/etc/profiles/per-user/connorbaker/bin/hyperfine \
--warmup 2 \
--command-name nix-daemon \
'/home/connorbaker/nix/nix-meson-O3/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store daemon \
> /dev/null' \
--command-name nix-daemon-no-gc \
'GC_DONT_GC=1 /home/connorbaker/nix/nix-meson-O3/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store daemon \
> /dev/null' \
--command-name nix-daemon-read-only \
'/home/connorbaker/nix/nix-meson-O3/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store daemon \
--read-only \
> /dev/null' \
--command-name nix-daemon-no-gc-read-only \
'GC_DONT_GC=1 /home/connorbaker/nix/nix-meson-O3/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store daemon \
--read-only \
> /dev/null' \
--command-name nix-no-daemon \
'/home/connorbaker/nix/nix-meson-O3/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store local \
> /dev/null' \
--command-name nix-no-daemon-read-only \
'/home/connorbaker/nix/nix-meson-O3/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store local \
--read-only \
> /dev/null' \
--command-name nix-no-daemon-no-gc \
'GC_DONT_GC=1 /home/connorbaker/nix/nix-meson-O3/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store local \
> /dev/null' \
--command-name nix-no-daemon-no-gc-read-only \
'GC_DONT_GC=1 /home/connorbaker/nix/nix-meson-O3/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store local \
--read-only \
> /dev/null'
Benchmark 1: nix-daemon
Time (mean ± σ): 11.813 s ± 0.104 s [User: 10.018 s, System: 1.392 s]
Range (min … max): 11.670 s … 11.954 s 10 runs
Benchmark 2: nix-daemon-no-gc
Time (mean ± σ): 7.594 s ± 0.106 s [User: 5.464 s, System: 1.743 s]
Range (min … max): 7.483 s … 7.823 s 10 runs
Benchmark 3: nix-daemon-read-only
Time (mean ± σ): 11.136 s ± 0.063 s [User: 9.765 s, System: 1.341 s]
Range (min … max): 11.063 s … 11.242 s 10 runs
Benchmark 4: nix-daemon-no-gc-read-only
Time (mean ± σ): 6.967 s ± 0.057 s [User: 5.241 s, System: 1.706 s]
Range (min … max): 6.924 s … 7.105 s 10 runs
Benchmark 5: nix-no-daemon
Time (mean ± σ): 11.408 s ± 0.065 s [User: 9.929 s, System: 1.447 s]
Range (min … max): 11.314 s … 11.489 s 10 runs
Benchmark 6: nix-no-daemon-read-only
Time (mean ± σ): 11.200 s ± 0.081 s [User: 9.844 s, System: 1.325 s]
Range (min … max): 11.098 s … 11.356 s 10 runs
Benchmark 7: nix-no-daemon-no-gc
Time (mean ± σ): 7.192 s ± 0.051 s [User: 5.356 s, System: 1.816 s]
Range (min … max): 7.160 s … 7.334 s 10 runs
Benchmark 8: nix-no-daemon-no-gc-read-only
Time (mean ± σ): 6.958 s ± 0.058 s [User: 5.235 s, System: 1.703 s]
Range (min … max): 6.907 s … 7.076 s 10 runs
Summary
nix-no-daemon-no-gc-read-only ran
1.00 ± 0.01 times faster than nix-daemon-no-gc-read-only
1.03 ± 0.01 times faster than nix-no-daemon-no-gc
1.09 ± 0.02 times faster than nix-daemon-no-gc
1.60 ± 0.02 times faster than nix-daemon-read-only
1.61 ± 0.02 times faster than nix-no-daemon-read-only
1.64 ± 0.02 times faster than nix-no-daemon
1.70 ± 0.02 times faster than nix-daemonSame as nix-meson-O3 but also changed default_options in each meson.build file to include 'b_lto=true'.
NOTE: the closure is 4.7 MB smaller than nix-meson-O3.
$ nix path-info -rSsh ./nix-meson-O3-lto
/nix/store/19avl2s0rd4whz3b0n118qdrv6yr3b0g-xgcc-13.2.0-libgcc 155.8 KiB 155.8 KiB
/nix/store/503h8rdwzj12dh0fs1b6y643qm26vqsb-libunistring-1.1 1.7 MiB 1.7 MiB
/nix/store/ya4arqpf6vwbq4msi449314kqbhdb4l4-libidn2-2.3.7 352.7 KiB 2.1 MiB
/nix/store/87848rvrg5c7jmplpi0iapvbxyj9kfid-glibc-2.39-52 28.7 MiB 31.0 MiB
/nix/store/b5248mzca3qjhjvck1vw3n6gg5mdhkz8-aws-c-common-0.9.17 1.0 MiB 32.0 MiB
/nix/store/0wb2jfh9zcdhh2maw76vrcd69yn56hw2-aws-c-sdkutils-0.1.16 150.4 KiB 32.1 MiB
/nix/store/dqrip0sx49kz9l6p8smq09aghas49s3b-gcc-13.2.0-libgcc 155.8 KiB 155.8 KiB
/nix/store/40yjzm7r5ki59kkk9423dnwbm86x7pyd-gcc-13.2.0-lib 8.7 MiB 39.8 MiB
/nix/store/0wq0r67l1lixwiwb7zyjbpl3yff5nbxw-boehm-gc-8.2.6 308.9 KiB 40.1 MiB
/nix/store/8c9vyhad2gxlg4clvaa3zlikv7lsym3s-libsodium-1.0.19 497.5 KiB 31.5 MiB
/nix/store/by2v5cgvm6kkjjfv52fz7vajwgmcfdga-brotli-1.1.0-lib 901.4 KiB 31.8 MiB
/nix/store/j8qdcfmjnlqlxk14mh59vcwr6hbznj92-boost-1.81.0 153.8 KiB 39.9 MiB
/nix/store/2k9k3q1vk8z6w7743k6nb22vnb05xv06-zlib-1.3.1 125.2 KiB 31.1 MiB
/nix/store/65ysp6n926dmcxdsg88q4qkw1kid7dih-attr-2.5.2 90.6 KiB 31.1 MiB
/nix/store/39jg2qg6jlfm4hdc8j61d09skxg4gfw0-acl-2.3.2 125.2 KiB 31.2 MiB
/nix/store/9g700djj7aqgr3fqq5ji9m8w3n5ip75s-xz-5.4.7 803.6 KiB 31.8 MiB
/nix/store/ddzqsmrcpciq7rm4p70ynj3hi07w88kz-libxml2-2.12.7 1.5 MiB 32.6 MiB
/nix/store/g0gx36d1l273mzhnz7jmq5vvjf6n9r70-bzip2-1.0.8 78.9 KiB 31.0 MiB
/nix/store/q46sbq9pgf58xb8zx5vlkbv96kidglxc-openssl-3.0.14 6.2 MiB 37.2 MiB
/nix/store/yh9n3w67ivhxkzx9m58cswbaf8nag436-zstd-1.5.6 1.1 MiB 40.9 MiB
/nix/store/mccadsxm3sgrcx2z0b9c8d5wgnlg7a3z-libarchive-3.7.4-lib 887.7 KiB 50.7 MiB
/nix/store/p95ba37n695180m4vjp4mn3j8vd156jr-libcpuid-0.6.5 259.2 KiB 31.2 MiB
/nix/store/2n4rl8pzprvj1g3h4k8qpzndfvgdh7ld-nix-util-2.26.0pre 1.6 MiB 54.1 MiB
/nix/store/8ivnsqp0wb8pna7rm31csdcn5aykdkqh-s2n-tls-1.4.12 1.2 MiB 38.4 MiB
/nix/store/dyxmqfpx08c2rhxg5kc83qa0qdxhzhfk-aws-c-cal-0.6.12 143.1 KiB 38.3 MiB
/nix/store/mldkgahcv5kg2kv19dc8zqmz5y702k01-aws-c-io-0.14.7 604.5 KiB 40.1 MiB
/nix/store/ydmbcr9ca5sdhvlx8icwvj454xvp6dd8-aws-checksums-0.1.18 61.8 KiB 32.0 MiB
/nix/store/5d4a4am9gb7ia79xfjcdbf2y3b9kwknn-aws-c-event-stream-0.4.2 169.5 KiB 40.3 MiB
/nix/store/m5lk8pdk0sz0pkf3kjzk0j2b7gargzzx-aws-c-compression-0.2.18 31.6 KiB 32.0 MiB
/nix/store/5xvdvbb7vzyazmhw57yhwwch8kqwjfyk-aws-c-http-0.8.1 601.5 KiB 40.7 MiB
/nix/store/xhd47fvyzk5gds3d6bnnvhfpqd9hrsvp-aws-c-auth-0.7.18 362.8 KiB 41.2 MiB
/nix/store/bdk3lnfjx46vsh5php2wbxsr9mriyhqb-aws-c-s3-0.5.7 331.7 KiB 41.6 MiB
/nix/store/rpj7hvnzrm4kh45bllm7fgncwmshlhiq-aws-c-mqtt-0.10.4 464.4 KiB 41.2 MiB
/nix/store/c46xzl45zg6225nxy780ccm5bzm9bdc4-aws-crt-cpp-0.26.8 941.5 KiB 52.0 MiB
/nix/store/2vdxsvrjrf1bgznbb9wga1rshpxc658a-publicsuffix-list-0-unstable-2024-01-07 302.5 KiB 302.5 KiB
/nix/store/g45c2banpvki32fjydbx3wclgcphmsbs-libpsl-0.21.5 79.6 KiB 31.3 MiB
/nix/store/kcc6cnkqm8if32y6hwh9ixpwxba15hkq-nghttp2-1.61.0-lib 219.0 KiB 31.2 MiB
/nix/store/ayndm66jniwbm76kprjjng06r4b7ypbw-keyutils-1.6.3-lib 41.6 KiB 31.0 MiB
/nix/store/wckka8fxv4h5hp74cbkhaw3fw7kbvcs1-bash-5.2p26 1.5 MiB 32.5 MiB
/nix/store/z5736fyn17s2mqql62rcznmj5yk5yx15-libkrb5-1.21.3 2.2 MiB 34.8 MiB
/nix/store/zmczdj9cz73g8vfrqkv2hh5fv9achs7v-libssh2-1.11.0 309.8 KiB 37.6 MiB
/nix/store/kw6idhj5b1pmwjg7rnyvrlhg5ffrn1vs-curl-8.7.1 874.1 KiB 53.6 MiB
/nix/store/86b4h0x1i310gglrsjrk093l0g2h26pr-aws-sdk-cpp-1.11.318 5.7 MiB 65.4 MiB
/nix/store/f6afb4jw9g5f94ixw0jn6cl0ah4liy35-sqlite-3.45.3 1.5 MiB 32.6 MiB
/nix/store/p66hqwsh90q1xdb6ss31105rr11s4z9v-busybox-static-x86_64-unknown-linux-musl-1.36.1 212.0 KiB 212.0 KiB
/nix/store/p8pfm2w0sapcyizn9rkgdpllywq05x5n-libseccomp-2.5.5-lib 138.9 KiB 31.1 MiB
/nix/store/gc2v6khwsv07d4rm9i08ry14rzjw8853-nix-store-2.26.0pre 3.9 MiB 77.1 MiB
/nix/store/96dj8i2gxxn31nw84r94h7bbfbg46rkw-pcre-8.45 513.3 KiB 31.5 MiB
/nix/store/k52i6nkc80lxr7f2axdrvdp3cbnwxmk7-libgit2-20240516095848-lib 1.5 MiB 39.3 MiB
/nix/store/1461pxkrrwhifkk3kl0ia285y62hb8wp-nix-fetchers-2.26.0pre 1.1 MiB 80.2 MiB
/nix/store/bms3zhc2fvfpz5x53jigvlbba7pmb57f-nix-main-2.26.0pre 310.7 KiB 77.4 MiB
/nix/store/gjcs4l64mjm6dg8pjbnkcpas55a164m8-nix-expr-2.26.0pre 2.2 MiB 82.7 MiB
/nix/store/qh1rkx7vnz1ybwxkjx2h57znljzgjcig-nix-flake-2.26.0pre 814.1 KiB 83.5 MiB
/nix/store/isqwk2fj3d87ykqkhgr1513jqlrkymr6-lowdown-1.1.0-lib 275.5 KiB 31.2 MiB
/nix/store/qcwlfkj0yggkfvv43y0bv7wyb35w1dh0-editline-1.17.1 54.4 KiB 31.0 MiB
/nix/store/va2zpdzlv0l6rg16m1359saans3p0xbd-nix-cmd-2.26.0pre 869.3 KiB 85.0 MiB
/nix/store/3pz2khi9xx5hj8h9kfv5bskf5n6rzfcn-nix-2.26.0pre20241206_dirty 2.8 MiB 87.8 MiB
/nix/store/wnfzq3rm2670fjybf9v18rypi3v2ip85-nix-manual-2.26.0pre20241206_dirty-man 457.6 KiB 457.6 KiB
/nix/store/7bi50qza65zvzlz723srkqq0r2zgrajs-nix-2.26.0pre20241206_dirty 2.4 KiB 88.3 MiB/etc/profiles/per-user/connorbaker/bin/hyperfine \
--warmup 2 \
--command-name nix-daemon \
'/home/connorbaker/nix/nix-meson-O3-lto/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store daemon \
> /dev/null' \
--command-name nix-daemon-no-gc \
'GC_DONT_GC=1 /home/connorbaker/nix/nix-meson-O3-lto/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store daemon \
> /dev/null' \
--command-name nix-daemon-read-only \
'/home/connorbaker/nix/nix-meson-O3-lto/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store daemon \
--read-only \
> /dev/null' \
--command-name nix-daemon-no-gc-read-only \
'GC_DONT_GC=1 /home/connorbaker/nix/nix-meson-O3-lto/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store daemon \
--read-only \
> /dev/null' \
--command-name nix-no-daemon \
'/home/connorbaker/nix/nix-meson-O3-lto/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store local \
> /dev/null' \
--command-name nix-no-daemon-read-only \
'/home/connorbaker/nix/nix-meson-O3-lto/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store local \
--read-only \
> /dev/null' \
--command-name nix-no-daemon-no-gc \
'GC_DONT_GC=1 /home/connorbaker/nix/nix-meson-O3-lto/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store local \
> /dev/null' \
--command-name nix-no-daemon-no-gc-read-only \
'GC_DONT_GC=1 /home/connorbaker/nix/nix-meson-O3-lto/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store local \
--read-only \
> /dev/null'
Benchmark 1: nix-daemon
Time (mean ± σ): 11.590 s ± 0.083 s [User: 9.821 s, System: 1.369 s]
Range (min … max): 11.469 s … 11.707 s 10 runs
Benchmark 2: nix-daemon-no-gc
Time (mean ± σ): 7.411 s ± 0.066 s [User: 5.274 s, System: 1.749 s]
Range (min … max): 7.328 s … 7.529 s 10 runs
Benchmark 3: nix-daemon-read-only
Time (mean ± σ): 11.065 s ± 0.094 s [User: 9.709 s, System: 1.323 s]
Range (min … max): 10.946 s … 11.237 s 10 runs
Benchmark 4: nix-daemon-no-gc-read-only
Time (mean ± σ): 6.815 s ± 0.040 s [User: 5.105 s, System: 1.691 s]
Range (min … max): 6.770 s … 6.894 s 10 runs
Benchmark 5: nix-no-daemon
Time (mean ± σ): 11.382 s ± 0.275 s [User: 9.900 s, System: 1.451 s]
Range (min … max): 11.183 s … 11.905 s 10 runs
Benchmark 6: nix-no-daemon-read-only
Time (mean ± σ): 11.063 s ± 0.222 s [User: 9.701 s, System: 1.330 s]
Range (min … max): 10.927 s … 11.667 s 10 runs
Benchmark 7: nix-no-daemon-no-gc
Time (mean ± σ): 7.061 s ± 0.048 s [User: 5.219 s, System: 1.820 s]
Range (min … max): 7.034 s … 7.184 s 10 runs
Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.
Benchmark 8: nix-no-daemon-no-gc-read-only
Time (mean ± σ): 6.813 s ± 0.054 s [User: 5.100 s, System: 1.694 s]
Range (min … max): 6.775 s … 6.961 s 10 runs
Summary
nix-no-daemon-no-gc-read-only ran
1.00 ± 0.01 times faster than nix-daemon-no-gc-read-only
1.04 ± 0.01 times faster than nix-no-daemon-no-gc
1.09 ± 0.01 times faster than nix-daemon-no-gc
1.62 ± 0.03 times faster than nix-no-daemon-read-only
1.62 ± 0.02 times faster than nix-daemon-read-only
1.67 ± 0.04 times faster than nix-no-daemon
1.70 ± 0.02 times faster than nix-daemonSame as nix-meson-O3-lto but also changed src/libexpr/package.nix to set enableGC ? false.
NOTE: this builds without the garbage collector, and so is different from just disabling garbage collection through the environment variable.
/etc/profiles/per-user/connorbaker/bin/hyperfine \
--warmup 2 \
--command-name nix-daemon-no-gc \
'/home/connorbaker/nix/nix-meson-O3-lto-no-gc/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store daemon \
> /dev/null' \
--command-name nix-daemon-no-gc-read-only \
'/home/connorbaker/nix/nix-meson-O3-lto-no-gc/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store daemon \
--read-only \
> /dev/null' \
--command-name nix-no-daemon-no-gc \
'/home/connorbaker/nix/nix-meson-O3-lto-no-gc/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store local \
> /dev/null' \
--command-name nix-no-daemon-no-gc-read-only \
'/home/connorbaker/nix/nix-meson-O3-lto-no-gc/bin/nix eval \
--file pkgs/top-level/release-attrpaths-superset.nix \
names \
--no-eval-cache \
--json \
--store local \
--read-only \
> /dev/null'
Benchmark 1: nix-daemon-no-gc
Time (mean ± σ): 7.080 s ± 0.047 s [User: 5.099 s, System: 1.598 s]
Range (min … max): 7.027 s … 7.181 s 10 runs
Benchmark 2: nix-daemon-no-gc-read-only
Time (mean ± σ): 6.490 s ± 0.033 s [User: 4.909 s, System: 1.564 s]
Range (min … max): 6.465 s … 6.555 s 10 runs
Benchmark 3: nix-no-daemon-no-gc
Time (mean ± σ): 6.728 s ± 0.020 s [User: 5.049 s, System: 1.661 s]
Range (min … max): 6.709 s … 6.775 s 10 runs
Benchmark 4: nix-no-daemon-no-gc-read-only
Time (mean ± σ): 6.494 s ± 0.025 s [User: 4.913 s, System: 1.564 s]
Range (min … max): 6.466 s … 6.549 s 10 runs
Summary
nix-daemon-no-gc-read-only ran
1.00 ± 0.01 times faster than nix-no-daemon-no-gc-read-only
1.04 ± 0.01 times faster than nix-no-daemon-no-gc
1.09 ± 0.01 times faster than nix-daemon-no-gc