From 2ac5e07a898a218532fd5e08b6c71fcfc2310ad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 4 Jun 2021 23:44:09 +0200 Subject: [PATCH] profiles: 'check-for-collisions' filters out more non-collisions upfront. When running: GUIX_PROFILING="gc object-cache" ./pre-inst-env \ guix install gnome -p /tmp/sdsdfsd --no-grafts -n this reduces the number of object cache lookup from 115K to 96K, with a slight CPU and memory usage reduction as well. * guix/profiles.scm (check-for-collisions)[candidates]: Exclude entries if their 'item' fields are eq?. --- guix/profiles.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/guix/profiles.scm b/guix/profiles.scm index ca997a7125..ed5c10315a 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -334,7 +334,10 @@ file name." (filter-map (lambda (entry) (let ((other (lookup (manifest-entry-name entry) (manifest-entry-output entry)))) - (and other (list entry other)))) + (and other + (not (eq? (manifest-entry-item entry) + (manifest-entry-item other))) + (list entry other)))) (manifest-transitive-entries manifest))) (define lower-pair