Since the included package set is determined at build time we can also generate the `subdirs.el` file at build time. This improves startup time somewhat since we don't have to traverse the directory to add to `load-path`. For example, ``` sh-session $ bench './emacs-old -Q --batch --kill' './emacs-new -Q --batch --kill' benchmarking bench/./emacs-old -Q --batch --kill time 72.77 ms (71.66 ms .. 73.65 ms) 1.000 R² (0.999 R² .. 1.000 R²) mean 72.49 ms (72.06 ms .. 72.92 ms) std dev 746.5 μs (582.4 μs .. 1.008 ms) benchmarking bench/./emacs-new -Q --batch --kill time 40.56 ms (40.24 ms .. 40.86 ms) 1.000 R² (0.999 R² .. 1.000 R²) mean 40.30 ms (40.12 ms .. 40.51 ms) std dev 401.9 μs (311.1 μs .. 555.8 μs) ``` The change does not actually affect the content of `load-path`: ``` sh-session $ diff -s <(./emacs-old --batch --eval '(prin1 load-path)' | sed -E 's!/nix/store/[[:alnum:]]{32}-!!g') \ <(./emacs-new --batch --eval '(prin1 load-path)' | sed -E 's!/nix/store/[[:alnum:]]{32}-!!g') Files /dev/fd/63 and /dev/fd/62 are identical ``` So in principle the only observable effect should be the improved startup time. |
||
---|---|---|
.. | ||
applications | ||
build-support | ||
common-updater | ||
data | ||
desktops | ||
development | ||
games | ||
misc | ||
os-specific | ||
pkgs-lib | ||
servers | ||
shells | ||
stdenv | ||
test | ||
tools | ||
top-level |