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.