4 comments

[ 3.8 ms ] story [ 20.1 ms ] thread
Didn't we do this last week?
I got an email asking for second change pool so I clicked it. Sorry. Didn't know someone else submitted.
As mentioned in the blog post, guix already does something similar, by patching glibc to support a per-application loader cache [1]. shrinkwrap seems to increase the binary size a lot (6.6 MB without shrinkwrap, 13 MB after running shrinkwrap for emacs).

Also when comparing the performance, the guix approach seems to be a bit faster:

  hyperfine -m 100 -w 5 -n shrinkwrap './emacs --version'  -n guix 'emacs --version'
  Benchmark #1: shrinkwrap
    Time (mean ± σ):      68.8 ms ±  13.7 ms    [User: 45.8 ms, System: 22.9 ms]
    Range (min … max):    52.8 ms … 106.3 ms    100 runs
  
  Benchmark #2: guix
    Time (mean ± σ):      56.7 ms ±  12.3 ms    [User: 34.9 ms, System: 21.7 ms]
    Range (min … max):    42.7 ms …  84.6 ms    100 runs
  
  Summary
    'guix' ran
      1.21 ± 0.36 times faster than 'shrinkwrap'
[1] https://guix.gnu.org/en/blog/2021/taming-the-stat-storm-with...
That's interesting. I'll have to think on why (or profile) the ld.so.conf.cache way is faster.

Thanks for the profile.