8615322bc8
builtins.genericClosure is a quite powerful (and undocumented) Nix primop: It repeatedly applies a function to values it produces and collects them into a list. Additionally individual results can be identified via a key attribute. Since genericClosure only ever creates a single list value internally, we can eliminate a huge performance bottleneck when building a list in a recursive algorithm: list concatenation. Because Nix needs to copy the entire chunk of memory used internally to represent the list, building big lists one element at a time grinds Nix to a halt. After rewriting decode using genericClosure decoding the LaTeX source of my 20 page term paper now takes 2s instead of 14min. Change-Id: I33847e4e7dd95d7f4d78ac83eb0d74a9867bfe80 |
||
---|---|---|
.. | ||
cynthia | ||
edef | ||
ericvolp12 | ||
eta | ||
firefly | ||
flokli | ||
grfn | ||
isomer | ||
lukegb | ||
Profpatsch | ||
qyliss | ||
riking | ||
sterni | ||
tazjin | ||
tvlbot.jpg |