You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The typechecker is fast, and the parser is fast enough, but the last mile introduces a fair amount of slow.
When this really starts to grate and we decide to do something about it, there's a fair bit of low hanging fruit:
Serialise intermediate state to disk so we can actually run incrementally
maybe we don't want to do this, would be finicky, but is the quickest solution
Builds should be streaming, currently there's a pointless outer Either restricting throughput
Fuse various traversals together. We probably walk every expression about 30 times before it hits the disk, for typechecking, type substitution, rewriting, let substitution, backend predicates, warnings, and evaluation/interpretation
Dependency order could be a rose tree instead of a list, exposing plenty of parallelism
eval and subst are extremely naive and slow, quadratic even, with some effort we could knock an order of magnitude off
The text was updated successfully, but these errors were encountered:
I benchmarked loom on Friday and subst was a major bottleneck.
I also experimented a bit with parallel codegen and parsing. Codegen saw some payoff from parMap / chunked list strategy, but overall there are too many eithers forcing values prematurely to get much value from this. It knocked about 150ms off overall.
The typechecker is fast, and the parser is fast enough, but the last mile introduces a fair amount of slow.
When this really starts to grate and we decide to do something about it, there's a fair bit of low hanging fruit:
The text was updated successfully, but these errors were encountered: