[Top][All Lists]

[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 
 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]