parsingdata/metal

Add caching to `DataExpressionSource`

Closed this issue · 0 comments

jvdb commented

Generally we try very hard to avoid mutable state in Metal, but in the case of DataExpressionSource this causes serious performance problems. IO laziness when parsing data with a DataExpressionSource means that for evaluating every Def or Until, the entire expression is evaluated. This has led to a slowdown of a factor of more than 100x in a benchmark.

So in this specific case, it makes sense for DataExpressionSource to cache its result.