Use delete-duplicates/sort! in inferior-packages->license-set-ids
As it should offer a speedup over delete-duplicates.
This commit is contained in:
parent
49b4841c4e
commit
60980e2668
1 changed files with 18 additions and 8 deletions
|
|
@ -19,6 +19,7 @@
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
#:use-module (ice-9 vlist)
|
#:use-module (ice-9 vlist)
|
||||||
#:use-module (squee)
|
#:use-module (squee)
|
||||||
|
#:use-module (guix-data-service utils)
|
||||||
#:use-module (guix-data-service model utils)
|
#:use-module (guix-data-service model utils)
|
||||||
#:use-module (guix-data-service model license)
|
#:use-module (guix-data-service model license)
|
||||||
#:export (inferior-packages->license-set-ids))
|
#:export (inferior-packages->license-set-ids))
|
||||||
|
|
@ -45,9 +46,7 @@ FROM license_sets")
|
||||||
" RETURNING id"))
|
" RETURNING id"))
|
||||||
|
|
||||||
(define (inferior-packages->license-set-ids conn license-id-lists)
|
(define (inferior-packages->license-set-ids conn license-id-lists)
|
||||||
(let* ((unique-license-id-lists (delete-duplicates
|
(let* ((existing-license-sets
|
||||||
license-id-lists))
|
|
||||||
(existing-license-sets
|
|
||||||
(exec-query->vhash conn
|
(exec-query->vhash conn
|
||||||
select-license-sets
|
select-license-sets
|
||||||
(lambda (results)
|
(lambda (results)
|
||||||
|
|
@ -63,11 +62,22 @@ FROM license_sets")
|
||||||
(lambda (result)
|
(lambda (result)
|
||||||
(string->number (first result))))) ;; id
|
(string->number (first result))))) ;; id
|
||||||
(missing-license-sets
|
(missing-license-sets
|
||||||
(delete-duplicates
|
(delete-duplicates/sort!
|
||||||
(filter (lambda (license-set-license-ids)
|
;; Use filter! with list-copy, as filter may return a list that
|
||||||
(not (vhash-assoc license-set-license-ids
|
;; shares a portion of the input list, and therefore could be at
|
||||||
existing-license-sets)))
|
;; risk of being modified when deleting duplicates
|
||||||
unique-license-id-lists)))
|
(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
|
(new-license-set-entries
|
||||||
(if (null? missing-license-sets)
|
(if (null? missing-license-sets)
|
||||||
'()
|
'()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue