guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/02: store: Speed up 'add-to-store'.


From: Ludovic Courtès
Subject: 01/02: store: Speed up 'add-to-store'.
Date: Mon, 12 Jun 2017 11:54:09 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit b46712159c15f72fc28b71d17d5a7c74fcb64ed0
Author: Ludovic Courtès <address@hidden>
Date:   Mon Jun 12 15:38:49 2017 +0200

    store: Speed up 'add-to-store'.
    
    * guix/store.scm (add-to-store): Remove 'lstat' call.
---
 guix/store.scm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/guix/store.scm b/guix/store.scm
index c94dfea..ed588aa 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -830,10 +830,11 @@ bits are kept.  HASH-ALGO must be a string such as 
\"sha256\".
 When RECURSIVE? is true, call (SELECT?  FILE STAT) for each directory entry,
 where FILE is the entry's absolute file name and STAT is the result of
 'lstat'; exclude entries for which SELECT? does not return true."
-      (let* ((st    (false-if-exception (lstat file-name)))
-             (args  `(,st ,basename ,recursive? ,hash-algo ,select?))
+      ;; Note: We don't stat FILE-NAME at each call, and thus we assume that
+      ;; the file remains unchanged for the lifetime of SERVER.
+      (let* ((args  `(,file-name ,basename ,recursive? ,hash-algo ,select?))
              (cache (nix-server-add-to-store-cache server)))
-        (or (and st (hash-ref cache args))
+        (or (hash-ref cache args)
             (let ((path (add-to-store server basename recursive?
                                       hash-algo file-name
                                       #:select? select?)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]