GNU bug report logs -
#46100
[PATCH 0/4] Memoize inferior package access.
Previous Next
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Hi Guix,
this patch set improves performance of inferior lookups by caching previous
results. The change in inferior-package->manifest-entry has the biggest
impact in my test case, where I'm building a profile consisting of a few R
packages. Without this patch it takes more than 14 seconds. With cached
results it takes less than a second.
Included is a patch that Ludo provided on #guix-hpc for which I wrote a
commit message.
The test case is attached.
Ludovic Courtès (1):
inferior: Memoize package input field access.
Ricardo Wurmus (3):
guix: Fix typo.
inferior: Memoize inferior-package->manifest-entry.
inferior: Memoize inferior package search path access.
guix/inferior.scm | 155 ++++++++++++++++++++++++----------------------
1 file changed, 81 insertions(+), 74 deletions(-)
base-commit: 90a6ce0b1852608185e3ba7fe09e585b43eac3be
--
2.29.2
--
Ricardo
[inferior-slow.scm (text/plain, inline)]
(import (guix packages)
(guix inferior)
(guix store)
(guix monads)(guix gexp)
(guix profiles)
(guix derivations)
(ice-9 match)
(srfi srfi-19))
(pk 'current-guix)
(define current-guix
;; /home/rekado/.config/guix/current
(let* ((default-guix "/gnu/store/ig6alp71w39bmfy51f1w32z0k2rbh6ra-profile")
(current-guix-inferior #false))
(lambda ()
(or current-guix-inferior
(begin
(set! current-guix-inferior (open-inferior
(canonicalize-path default-guix)))
current-guix-inferior)))))
(define (lookup-package specification)
(match (lookup-inferior-packages (current-guix) specification)
((first . rest) first)
(x (error "oops" x))))
(define specs
(list "bash-minimal"
"r-minimal"
"r-ggplot2"
"r-ggrepel"
"r-deseq2"
"r-dt"
"r-pheatmap"
"r-corrplot"
"r-reshape2"
"r-plotly"
"r-scales"
"r-crosstalk"
"r-gprofiler"
"r-rtracklayer"
"r-summarizedexperiment"))
(pk 'packages)
(define packages
(map lookup-package specs))
(pk 'packages->manifest)
(let ((start (current-time)))
(let ((manifest (packages->manifest packages)))
(pk 'packages->manifest-done (time-difference (current-time) start))))
This bug report was last modified 4 years and 170 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.