diff options
author | Ludovic Courtès <ludo@gnu.org> | 2014-10-13 23:00:06 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2014-10-13 23:34:09 +0200 |
commit | 8601d0ddcf5f0c1123d7679924560bc1b6b0e846 (patch) | |
tree | ff0dd80e731fd0f40d915d67c8f0da54b67d9bb7 | |
parent | 1391dcb054f42e9ca58496db3269bee6e05f9653 (diff) | |
download | guix-8601d0ddcf5f0c1123d7679924560bc1b6b0e846.tar.gz guix-8601d0ddcf5f0c1123d7679924560bc1b6b0e846.zip |
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'.
-rw-r--r-- | guix/derivations.scm | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/guix/derivations.scm b/guix/derivations.scm index 210afd2ed1..c0b69e71d6 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -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))) |