~ruther/guix-local

8601d0ddcf5f0c1123d7679924560bc1b6b0e846 — Ludovic Courtès 11 years ago 1391dcb
derivations: Micro-optimize 'imported-modules'.

This reduces run time of (package-derivation s emacs) by ~5%.

* guix/derivations.scm (search-path*): New procedure.
  (imported-modules): Use it instead of 'search-path'.
1 files changed, 6 insertions(+), 1 deletions(-)

M guix/derivations.scm
M guix/derivations.scm => guix/derivations.scm +6 -1
@@ 893,6 893,11 @@ system, imported, and appears under FINAL-PATH in the resulting store path."
                                  #:guile-for-build guile
                                  #:local-build? #t)))

(define search-path*
  ;; A memoizing version of 'search-path' so 'imported-modules' does not end
  ;; up looking for the same files over and over again.
  (memoize search-path))

(define* (imported-modules store modules
                           #:key (name "module-import")
                           (system (%current-system))


@@ 907,7 912,7 @@ search path."
                      (let ((f (string-append
                                (string-join (map symbol->string m) "/")
                                ".scm")))
                        (cons f (search-path module-path f))))
                        (cons f (search-path* module-path f))))
                    modules)))
    (imported-files store files #:name name #:system system
                    #:guile guile)))