guix-commits
[Top][All Lists]
Advanced

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

10/10: store: Micro-optimize object cache lookup.


From: guix-commits
Subject: 10/10: store: Micro-optimize object cache lookup.
Date: Tue, 23 Feb 2021 09:27:25 -0500 (EST)

civodul pushed a commit to branch master
in repository guix.

commit 0a912b3a434c9ff9515f9036feae4d3a7075fb2f
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Fri Feb 19 22:30:30 2021 +0100

    store: Micro-optimize object cache lookup.
    
    This avoids a closure allocation when 'lookup-cached-object' is called.
    
    * guix/store.scm (lookup-cached-object): Avoid optional/keyword
    arguments and inline.
    (%mcached): Adjust accordingly.
---
 guix/store.scm | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/guix/store.scm b/guix/store.scm
index dccf8ba..37ae6cf 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -1863,8 +1863,7 @@ and RESULT is typically its derivation."
       (lambda (x y)
         #t)))
 
-(define* (lookup-cached-object object #:optional (keys '())
-                               #:key (vhash-fold* vhash-foldq*))
+(define-inlinable (lookup-cached-object object keys vhash-fold*)
   "Return the cached object in the store connection corresponding to OBJECT
 and KEYS; use VHASH-FOLD* to look for OBJECT in the cache.  KEYS is a list of
 additional keys to match against, and which are compared with 'equal?'.
@@ -1895,7 +1894,7 @@ Return #f on failure and the cached result otherwise."
 OBJECT/KEYS, or return its cached value.  Use VHASH-CONS to insert OBJECT into
 the cache, and VHASH-FOLD* to look it up."
   (mlet %store-monad ((cached (lookup-cached-object object keys
-                                                    #:vhash-fold* 
vhash-fold*)))
+                                                    vhash-fold*)))
     (if cached
         (return cached)
         (>>= (mthunk)



reply via email to

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