list/e performance tweak

This commit is contained in:
Max New 2014-10-15 22:34:57 -04:00
parent d4b5d1897e
commit 878358ec9e

View File

@ -1358,17 +1358,18 @@
[(= k 1) (map/e list car (car es))]
[(not all-inf?) (apply list/e es)]
[else
(define factors (reverse (prime-factorize k)))
(define factors (prime-factorize k))
(let loop ([factors factors]
[es es])
[es es]
[k k])
(match factors
[(cons factor '())
(prime-length-box-list/e es)]
[(cons factor factors)
(define chunk-size (/ (length es) factor))
(define chunk-size (/ k factor))
(define chunk/es
(for/list ([es (in-list (chunks-of es chunk-size))])
(loop factors es)))
(loop factors es chunk-size)))
(map/e
(λ (chunks)
(apply append chunks))