The saga continues! With today’s commit, the execution time of
guix build -e '(@ (gnu packages emacs) emacs)' -d is down from 1.54s to 1.08s on my 2.6 GHz laptop. That’s 30%. :-) The head of the profile is now like this: --8<---------------cut here---------------start------------->8--- scheme@(guile-user)> ,pr (package-derivation s emacs) % cumulative self time seconds seconds name 29.07 0.35 0.33 write 8.14 0.09 0.09 search-path 6.98 0.09 0.08 open-file 5.81 0.07 0.07 read 4.65 0.51 0.05 call-with-output-string 4.65 0.05 0.05 %after-gc-thunk 3.49 0.04 0.04 hash-ref 2.33 0.24 0.03 write-derivation 2.33 0.07 0.03 bytevector-quintet-fold-right 2.33 0.03 0.03 #<procedure 23dc1c0 (_ _ _ _)> 2.33 0.03 0.03 hash-set! 2.33 0.03 0.03 display [...] 0.00 0.79 0.00 build-expression->derivation [...] --- Sample count: 86 Total time: 1.125903012 seconds (0.152722833 seconds in GC) --8<---------------cut here---------------end--------------->8--- IOW, the main bottleneck is in Guile’s ‘write’ and port output (as called from ‘build-expression->derivation’). We also do a lot of GC. This could be improved by optimizing the RPCs in store.scm to allocate less. Ludo’.
