[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
02/13: Use delete-duplicates/sort! in inferior-packages->license-set-ids
From: |
Christopher Baines |
Subject: |
02/13: Use delete-duplicates/sort! in inferior-packages->license-set-ids |
Date: |
Fri, 19 Jan 2024 04:57:46 -0500 (EST) |
cbaines pushed a commit to branch master
in repository data-service.
commit 60980e2668961d4b215f22fde670c638e9b7b7ab
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Mon Jan 15 11:19:58 2024 +0000
Use delete-duplicates/sort! in inferior-packages->license-set-ids
As it should offer a speedup over delete-duplicates.
---
guix-data-service/model/license-set.scm | 26 ++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/guix-data-service/model/license-set.scm
b/guix-data-service/model/license-set.scm
index 7f23eaf..cff68b7 100644
--- a/guix-data-service/model/license-set.scm
+++ b/guix-data-service/model/license-set.scm
@@ -19,6 +19,7 @@
#:use-module (srfi srfi-1)
#:use-module (ice-9 vlist)
#:use-module (squee)
+ #:use-module (guix-data-service utils)
#:use-module (guix-data-service model utils)
#:use-module (guix-data-service model license)
#:export (inferior-packages->license-set-ids))
@@ -45,9 +46,7 @@ FROM license_sets")
" RETURNING id"))
(define (inferior-packages->license-set-ids conn license-id-lists)
- (let* ((unique-license-id-lists (delete-duplicates
- license-id-lists))
- (existing-license-sets
+ (let* ((existing-license-sets
(exec-query->vhash conn
select-license-sets
(lambda (results)
@@ -63,11 +62,22 @@ FROM license_sets")
(lambda (result)
(string->number (first result))))) ;; id
(missing-license-sets
- (delete-duplicates
- (filter (lambda (license-set-license-ids)
- (not (vhash-assoc license-set-license-ids
- existing-license-sets)))
- unique-license-id-lists)))
+ (delete-duplicates/sort!
+ ;; Use filter! with list-copy, as filter may return a list that
+ ;; shares a portion of the input list, and therefore could be at
+ ;; risk of being modified when deleting duplicates
+ (filter! (lambda (license-set-license-ids)
+ (not (vhash-assoc license-set-license-ids
+ existing-license-sets)))
+ (list-copy license-id-lists))
+ (lambda (full-a full-b)
+ (let loop ((a full-a)
+ (b full-b))
+ (cond
+ ((null? a) #f)
+ ((null? b) #t)
+ (else
+ (< (car a) (car b))))))))
(new-license-set-entries
(if (null? missing-license-sets)
'()
- branch master updated (241d7e4 -> e0a6c84), Christopher Baines, 2024/01/19
- 04/13: Have delete-duplicates/sort! take a equality procedure, Christopher Baines, 2024/01/19
- 07/13: Fix par-map&, Christopher Baines, 2024/01/19
- 09/13: Split and instrument parts of inferior-packages->package-metadata-ids, Christopher Baines, 2024/01/19
- 08/13: Rewrite part of insert-missing-data-and-return-all-ids to avoid filter, Christopher Baines, 2024/01/19
- 11/13: Fixup tests, Christopher Baines, 2024/01/19
- 13/13: Try to fix issues with derivations being GC'ed, Christopher Baines, 2024/01/19
- 10/13: Add meaningful parallelism to processing jobs, Christopher Baines, 2024/01/19
- 03/13: Add back inferior heap size reporting, Christopher Baines, 2024/01/19
- 05/13: Make it possible to destroy a resource pool, Christopher Baines, 2024/01/19
- 02/13: Use delete-duplicates/sort! in inferior-packages->license-set-ids,
Christopher Baines <=
- 01/13: Use delete-duplicates/sort! in insert-missing-data-and-return-all-ids, Christopher Baines, 2024/01/19
- 12/13: Remove drain? #t from process job, Christopher Baines, 2024/01/19
- 06/13: Show backtraces when using parallel fibers and resource pools, Christopher Baines, 2024/01/19