What happens now after "delimited continuations" is merged to GHC?

The charts in the Effects for Less talk shows

library time (μs)
eff 125
mtl 640
fused 1162

So the first question is: what benchmark is Alexis talking about here? She didn’t explicitly mention it (or I didn’t catch it), but we can infer from the context that it’s likely to be the countdown benchmark. Then, what is the n she used? I tested n = 10000 on my machine and got the following results:

library time (μs)
mtl 569
fused 1140

which is pretty close if you ask me. How, then, did eveff and my proof-of-concept sp do?

library time (μs)
sp 203
ev 384
mtl 569
fused 1140

sp is only less than 1x slower than eff! Note that sp uses the same Ctl monad as eveff, and I only improved on the evidence-passing part. So, yes, even with Ctl you can have an 80% performance improvement, at least in this benchmark.

This is obviously not the whole story, and It’d be very interesting to see how eff performs in the other benchmarks.

1 Like