diff options
author | Christopher Baines <mail@cbaines.net> | 2020-12-11 09:51:30 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-12-11 09:51:30 +0000 |
commit | b73a604d24be553ca36963e43e7b03d2d8801357 (patch) | |
tree | d95402c1c66a9ff73548ebe21c41d9029d0ab079 /guix-build-coordinator/build-allocator.scm | |
parent | 3648bd5ca8e870703156d07442fe802eb51c9350 (diff) | |
download | build-coordinator-b73a604d24be553ca36963e43e7b03d2d8801357.tar build-coordinator-b73a604d24be553ca36963e43e7b03d2d8801357.tar.gz |
Fix the use of a slow alist in the basic allocator
Changing this to a hash table really speeds things up.
Diffstat (limited to 'guix-build-coordinator/build-allocator.scm')
-rw-r--r-- | guix-build-coordinator/build-allocator.scm | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/guix-build-coordinator/build-allocator.scm b/guix-build-coordinator/build-allocator.scm index f2db2b5..f24aa04 100644 --- a/guix-build-coordinator/build-allocator.scm +++ b/guix-build-coordinator/build-allocator.scm @@ -87,13 +87,16 @@ (define systems-for-builds ;; TODO Should be one query - (map (lambda (build) - (let ((build-id (assq-ref build 'uuid))) - (cons build-id - (datastore-find-build-derivation-system - datastore - build-id)))) - builds)) + (let ((table (make-hash-table builds-count))) + (for-each (lambda (build) + (let ((build-id (assq-ref build 'uuid))) + (hash-set! table + build-id + (datastore-find-build-derivation-system + datastore + build-id)))) + builds) + table)) (define (filter-builds-for-agent agent-id) (define requested-systems @@ -126,8 +129,8 @@ (log "build:" (assq-ref build 'uuid)) (and (or (null? requested-systems) - (let ((build-system (assoc-ref systems-for-builds - (assq-ref build 'uuid)))) + (let ((build-system (hash-ref systems-for-builds + (assq-ref build 'uuid)))) (member build-system requested-systems))) (let* ((build-id (assq-ref build 'uuid)) (setup-failures-for-build |