More efficiently create some vectors

And instrument the inferior memory after creating the gds-inferior-packages
vector.
This commit is contained in:
Christopher Baines 2024-11-08 19:01:54 +00:00
parent ca5f0036f3
commit ebeb4212ff

View file

@ -541,8 +541,13 @@
(/ (assoc-ref stats 'heap-size) (/ (assoc-ref stats 'heap-size)
(expt 2. 20))))) (expt 2. 20)))))
(let ((vec (list->vector (let ((vec (make-vector ,count)))
(iota ,count ,start-index)))) (vector-fold
(lambda (i index _)
(vector-set! vec i index)
(1+ index))
,start-index
vec)
(vector-map! (vector-map!
(lambda (_ index) (lambda (_ index)
(define package (vector-ref gds-inferior-packages index)) (define package (vector-ref gds-inferior-packages index))
@ -736,18 +741,30 @@
(inferior-eval (inferior-eval
`(define gds-inferior-packages `(define gds-inferior-packages
(make-vector ,deduplicated-packages-length)) (vector ,@(map inferior-package-id deduplicated-packages)))
inf)
(inferior-eval
'(begin
(vector-map!
(lambda (_ id)
(or (hashv-ref %package-table id)
(error "missing package id")))
gds-inferior-packages)
#t)
inf) inf)
(inferior-eval (inferior-eval
`(for-each '(let ((stats (gc-stats)))
(lambda (index id) (simple-format
(vector-set! gds-inferior-packages (current-error-port)
index "post gds-inferior-packages inferior heap: ~a MiB used (~a MiB heap)~%"
(or (hashv-ref %package-table id) (round
(error "missing package id")))) (/ (- (assoc-ref stats 'heap-size)
(iota ,deduplicated-packages-length) (assoc-ref stats 'heap-free-size))
(list ,@(map inferior-package-id deduplicated-packages))) (expt 2. 20)))
(round
(/ (assoc-ref stats 'heap-size)
(expt 2. 20)))))
inf) inf)
(values (list->vector deduplicated-packages) (values (list->vector deduplicated-packages)