Significant performance regressions in the benchmark suite of effectful between 9.4.4 and 9.6.1-alpha1
Steps to reproduce:
git clone https://github.com/haskell-effectful/effectful.git
cd effectful
git checkout ghc-22758
cabal run -w ghc-9.4.4 bench -- --csv 944.csv
cabal run -w ghc-9.6.0.20230111 bench -- --baseline 944.csv
A few benchmarks are faster, but almost everything else is slower.
In particular both the countdown
and filesize
benchmarks are significantly slower (note that this includes reference implementation and implementation that uses mtl only).
All
concurrency
shallow
unmask 1x
async (IO): OK (0.17s)
301 ns ± 22 ns, 1.4 KB allocated, 1 B copied, 7.0 MB peak memory, 19% more than baseline
async (Eff): OK (0.15s)
526 ns ± 42 ns, 2.2 KB allocated, 2 B copied, 7.0 MB peak memory, same as baseline
Fork (localUnliftIO/withLiftMapIO): OK (0.13s)
944 ns ± 90 ns, 3.3 KB allocated, 4 B copied, 7.0 MB peak memory, 19% more than baseline
Fork (localUnlift/withLiftMap): OK (0.17s)
1.21 μs ± 83 ns, 4.3 KB allocated, 6 B copied, 7.0 MB peak memory, 18% more than baseline
Fork (localLiftUnliftIO): OK (0.15s)
1.09 μs ± 101 ns, 3.7 KB allocated, 52 B copied, 7.0 MB peak memory, 18% more than baseline
Fork (localLiftUnlift): OK (0.23s)
1.66 μs ± 86 ns, 5.9 KB allocated, 104 B copied, 7.0 MB peak memory, 30% more than baseline
unmask 10x
async (IO): OK (0.21s)
389 ns ± 23 ns, 1.6 KB allocated, 1 B copied, 7.0 MB peak memory, 23% more than baseline
async (Eff): OK (0.19s)
685 ns ± 41 ns, 2.7 KB allocated, 3 B copied, 7.0 MB peak memory, 25% less than baseline
Fork (localUnliftIO/withLiftMapIO): OK (0.16s)
1.15 μs ± 87 ns, 3.9 KB allocated, 5 B copied, 7.0 MB peak memory, same as baseline
Fork (localUnlift/withLiftMap): OK (0.21s)
1.54 μs ± 99 ns, 5.1 KB allocated, 7 B copied, 7.0 MB peak memory, same as baseline
Fork (localLiftUnliftIO): OK (0.14s)
2.08 μs ± 167 ns, 6.1 KB allocated, 55 B copied, 7.0 MB peak memory, 15% more than baseline
Fork (localLiftUnlift): OK (0.23s)
3.34 μs ± 173 ns, 11 KB allocated, 111 B copied, 7.0 MB peak memory, 25% more than baseline
unmask 100x
async (IO): OK (0.22s)
1.62 μs ± 89 ns, 36 KB allocated, 47 B copied, 11 MB peak memory, 17% more than baseline
async (Eff): OK (0.17s)
2.51 μs ± 171 ns, 40 KB allocated, 49 B copied, 11 MB peak memory, 43% less than baseline
Fork (localUnliftIO/withLiftMapIO): OK (0.13s)
3.63 μs ± 344 ns, 41 KB allocated, 49 B copied, 11 MB peak memory, 29% less than baseline
Fork (localUnlift/withLiftMap): OK (0.16s)
4.71 μs ± 427 ns, 46 KB allocated, 50 B copied, 11 MB peak memory, 21% less than baseline
Fork (localLiftUnliftIO): OK (0.20s)
11.7 μs ± 687 ns, 63 KB allocated, 100 B copied, 11 MB peak memory, 13% more than baseline
Fork (localLiftUnlift): OK (0.17s)
20.3 μs ± 1.5 μs, 90 KB allocated, 180 B copied, 11 MB peak memory, 24% more than baseline
deep
unmask 1x
async (Eff): OK (0.21s)
3.13 μs ± 173 ns, 14 KB allocated, 23 B copied, 11 MB peak memory, 8% more than baseline
Fork (localUnliftIO/withLiftMapIO): OK (0.12s)
3.58 μs ± 333 ns, 15 KB allocated, 26 B copied, 11 MB peak memory, 16% more than baseline
Fork (localUnlift/withLiftMap): OK (0.14s)
4.13 μs ± 330 ns, 18 KB allocated, 31 B copied, 11 MB peak memory, 20% more than baseline
Fork (localLiftUnliftIO): OK (0.13s)
3.80 μs ± 339 ns, 16 KB allocated, 77 B copied, 11 MB peak memory, 19% more than baseline
Fork (localLiftUnlift): OK (0.17s)
4.92 μs ± 366 ns, 21 KB allocated, 136 B copied, 11 MB peak memory, 26% more than baseline
unmask 10x
async (Eff): OK (0.22s)
3.28 μs ± 173 ns, 15 KB allocated, 19 B copied, 11 MB peak memory, same as baseline
Fork (localUnliftIO/withLiftMapIO): OK (0.13s)
3.79 μs ± 362 ns, 16 KB allocated, 26 B copied, 11 MB peak memory, same as baseline
Fork (localUnlift/withLiftMap): OK (0.15s)
4.39 μs ± 337 ns, 19 KB allocated, 32 B copied, 11 MB peak memory, 12% more than baseline
Fork (localLiftUnliftIO): OK (0.16s)
4.66 μs ± 342 ns, 18 KB allocated, 89 B copied, 11 MB peak memory, 16% more than baseline
Fork (localLiftUnlift): OK (0.11s)
6.64 μs ± 662 ns, 26 KB allocated, 157 B copied, 11 MB peak memory, 27% more than baseline
unmask 100x
async (Eff): OK (0.18s)
5.08 μs ± 383 ns, 52 KB allocated, 84 B copied, 11 MB peak memory, 21% less than baseline
Fork (localUnliftIO/withLiftMapIO): OK (0.21s)
6.21 μs ± 362 ns, 54 KB allocated, 85 B copied, 11 MB peak memory, 13% less than baseline
Fork (localUnlift/withLiftMap): OK (0.13s)
7.50 μs ± 694 ns, 59 KB allocated, 87 B copied, 11 MB peak memory, 9% less than baseline
Fork (localLiftUnliftIO): OK (0.13s)
14.5 μs ± 1.4 μs, 74 KB allocated, 174 B copied, 11 MB peak memory, 14% more than baseline
Fork (localLiftUnlift): OK (0.20s)
24.2 μs ± 1.6 μs, 104 KB allocated, 340 B copied, 11 MB peak memory, 28% more than baseline
unlifting
reference
dummy: OK (0.24s)
213 ps ± 10 ps, 0 B allocated, 0 B copied, 11 MB peak memory, same as baseline
async: OK (0.20s)
359 ns ± 21 ns, 1.6 KB allocated, 1 B copied, 11 MB peak memory, 16% more than baseline
concurrently: OK (0.26s)
480 ns ± 21 ns, 2.9 KB allocated, 3 B copied, 11 MB peak memory, 30% more than baseline
shallow
dummy
noop: OK (0.24s)
54.7 ns ± 4.1 ns, 334 B allocated, 0 B copied, 11 MB peak memory, same as baseline
seq: OK (0.20s)
88.3 ns ± 5.6 ns, 428 B allocated, 0 B copied, 11 MB peak memory, 12% more than baseline
conc
Async: OK (0.18s)
158 ns ± 11 ns, 640 B allocated, 0 B copied, 11 MB peak memory, 21% more than baseline
ephemeral/limited: OK (0.20s)
178 ns ± 11 ns, 992 B allocated, 0 B copied, 11 MB peak memory, 18% more than baseline
ephemeral/unlimited: OK (0.19s)
172 ns ± 13 ns, 940 B allocated, 0 B copied, 11 MB peak memory, 17% more than baseline
persistent/limited: OK (0.23s)
208 ns ± 10 ns, 1.0 KB allocated, 0 B copied, 11 MB peak memory, 32% more than baseline
persistent/unlimited: OK (0.23s)
209 ns ± 12 ns, 1.0 KB allocated, 0 B copied, 11 MB peak memory, 39% more than baseline
async
Async: OK (0.17s)
627 ns ± 42 ns, 2.4 KB allocated, 2 B copied, 11 MB peak memory, 15% more than baseline
ephemeral/limited: OK (0.23s)
822 ns ± 44 ns, 2.8 KB allocated, 3 B copied, 11 MB peak memory, 34% more than baseline
ephemeral/unlimited: OK (0.23s)
842 ns ± 44 ns, 3.0 KB allocated, 3 B copied, 11 MB peak memory, 28% more than baseline
persistent/limited: OK (0.13s)
937 ns ± 86 ns, 3.2 KB allocated, 51 B copied, 11 MB peak memory, 33% more than baseline
persistent/unlimited: OK (0.16s)
1.12 μs ± 87 ns, 3.6 KB allocated, 249 B copied, 11 MB peak memory, 32% more than baseline
concurrently
Async: OK (0.21s)
768 ns ± 47 ns, 4.0 KB allocated, 5 B copied, 11 MB peak memory, 17% more than baseline
ephemeral/limited: OK (0.14s)
979 ns ± 84 ns, 4.4 KB allocated, 4 B copied, 11 MB peak memory, 26% more than baseline
ephemeral/unlimited: OK (0.14s)
1.03 μs ± 84 ns, 4.6 KB allocated, 5 B copied, 11 MB peak memory, 30% more than baseline
persistent/limited: OK (0.17s)
1.25 μs ± 91 ns, 5.2 KB allocated, 103 B copied, 11 MB peak memory, 32% more than baseline
persistent/unlimited: OK (0.21s)
1.56 μs ± 97 ns, 5.8 KB allocated, 469 B copied, 11 MB peak memory, 34% more than baseline
deep
dummy
noop: OK (0.27s)
1.97 μs ± 106 ns, 10 KB allocated, 12 B copied, 11 MB peak memory, 10% more than baseline
seq: OK (0.14s)
2.01 μs ± 166 ns, 10 KB allocated, 12 B copied, 11 MB peak memory, 9% more than baseline
conc
Async: OK (0.14s)
2.05 μs ± 174 ns, 11 KB allocated, 8 B copied, 11 MB peak memory, 10% more than baseline
ephemeral/limited: OK (0.16s)
2.46 μs ± 195 ns, 13 KB allocated, 16 B copied, 11 MB peak memory, 14% more than baseline
ephemeral/unlimited: OK (0.17s)
2.49 μs ± 170 ns, 13 KB allocated, 16 B copied, 11 MB peak memory, 17% more than baseline
persistent/limited: OK (0.17s)
2.45 μs ± 167 ns, 13 KB allocated, 14 B copied, 11 MB peak memory, 13% more than baseline
persistent/unlimited: OK (0.17s)
2.49 μs ± 216 ns, 13 KB allocated, 15 B copied, 11 MB peak memory, 16% more than baseline
async
Async: OK (0.22s)
3.25 μs ± 165 ns, 14 KB allocated, 32 B copied, 11 MB peak memory, 14% more than baseline
ephemeral/limited: OK (0.23s)
3.41 μs ± 211 ns, 15 KB allocated, 23 B copied, 11 MB peak memory, 15% more than baseline
ephemeral/unlimited: OK (0.13s)
3.78 μs ± 355 ns, 17 KB allocated, 30 B copied, 11 MB peak memory, 18% more than baseline
persistent/limited: OK (0.12s)
3.49 μs ± 345 ns, 15 KB allocated, 62 B copied, 11 MB peak memory, 13% more than baseline
persistent/unlimited: OK (0.14s)
4.08 μs ± 338 ns, 17 KB allocated, 281 B copied, 11 MB peak memory, 20% more than baseline
concurrently
Async: OK (0.13s)
3.79 μs ± 338 ns, 17 KB allocated, 13 B copied, 11 MB peak memory, 19% more than baseline
ephemeral/limited: OK (0.14s)
3.98 μs ± 349 ns, 18 KB allocated, 26 B copied, 11 MB peak memory, 20% more than baseline
ephemeral/unlimited: OK (0.15s)
4.42 μs ± 334 ns, 20 KB allocated, 58 B copied, 11 MB peak memory, 27% more than baseline
persistent/limited: OK (0.15s)
4.19 μs ± 384 ns, 19 KB allocated, 116 B copied, 11 MB peak memory, 18% more than baseline
persistent/unlimited: OK (0.17s)
4.93 μs ± 335 ns, 21 KB allocated, 504 B copied, 11 MB peak memory, 24% more than baseline
countdown
1000
reference (pure): OK (0.21s)
3.00 μs ± 169 ns, 16 KB allocated, 10 B copied, 11 MB peak memory, same as baseline
reference (ST): OK (0.15s)
18.2 μs ± 1.4 μs, 15 KB allocated, 11 B copied, 11 MB peak memory, same as baseline
effectful (local/static)
shallow: OK (0.23s)
6.60 μs ± 348 ns, 16 KB allocated, 12 B copied, 11 MB peak memory, 5% more than baseline
deep: OK (0.13s)
7.39 μs ± 685 ns, 20 KB allocated, 19 B copied, 11 MB peak memory, same as baseline
effectful (local/static/state)
shallow: OK (0.21s)
6.17 μs ± 429 ns, 16 KB allocated, 11 B copied, 11 MB peak memory, 10% more than baseline
deep: OK (0.11s)
6.91 μs ± 679 ns, 20 KB allocated, 21 B copied, 11 MB peak memory, same as baseline
effectful (local/static/stateM)
shallow: OK (0.19s)
45.5 μs ± 2.9 μs, 133 KB allocated, 100 B copied, 11 MB peak memory, 65% more than baseline
deep: OK (0.20s)
47.8 μs ± 3.1 μs, 137 KB allocated, 159 B copied, 11 MB peak memory, 70% more than baseline
effectful (local/dynamic)
shallow: OK (0.19s)
44.8 μs ± 2.8 μs, 101 KB allocated, 78 B copied, 11 MB peak memory, 85% more than baseline
deep: OK (0.19s)
45.2 μs ± 3.0 μs, 105 KB allocated, 129 B copied, 11 MB peak memory, 79% more than baseline
effectful (local/dynamic/double)
shallow: OK (0.18s)
82.5 μs ± 6.3 μs, 234 KB allocated, 193 B copied, 11 MB peak memory, 89% more than baseline
deep: OK (0.18s)
84.1 μs ± 5.9 μs, 239 KB allocated, 309 B copied, 11 MB peak memory, 88% more than baseline
effectful (shared/static)
shallow: OK (0.14s)
72.1 μs ± 6.0 μs, 115 KB allocated, 88 B copied, 11 MB peak memory, 120% more than baseline
deep: OK (0.16s)
73.5 μs ± 6.8 μs, 119 KB allocated, 141 B copied, 11 MB peak memory, 113% more than baseline
effectful (shared/dynamic)
shallow: OK (0.23s)
109 μs ± 5.4 μs, 177 KB allocated, 139 B copied, 11 MB peak memory, 134% more than baseline
deep: OK (0.23s)
111 μs ± 6.9 μs, 182 KB allocated, 226 B copied, 11 MB peak memory, 134% more than baseline
effectful (shared/dynamic/double)
shallow: OK (0.16s)
150 μs ± 12 μs, 310 KB allocated, 236 B copied, 11 MB peak memory, 131% more than baseline
deep: OK (0.16s)
150 μs ± 12 μs, 310 KB allocated, 393 B copied, 11 MB peak memory, 130% more than baseline
freer-simple
shallow: OK (0.16s)
75.1 μs ± 5.4 μs, 209 KB allocated, 143 B copied, 11 MB peak memory, 70% more than baseline
deep: OK (0.15s)
140 μs ± 11 μs, 1.0 MB allocated, 749 B copied, 11 MB peak memory, 37% more than baseline
mtl
shallow: OK (0.23s)
213 μs ± 12 μs, 477 KB allocated, 333 B copied, 11 MB peak memory, 201% more than baseline
deep: OK (0.19s)
1.45 ms ± 106 μs, 3.0 MB allocated, 2.4 KB copied, 11 MB peak memory, 179% more than baseline
fused-effects
shallow: OK (0.17s)
312 μs ± 22 μs, 713 KB allocated, 489 B copied, 11 MB peak memory, 102% more than baseline
deep: OK (0.15s)
2.31 ms ± 174 μs, 5.2 MB allocated, 4.0 KB copied, 11 MB peak memory, 85% more than baseline
polysemy
shallow: OK (0.14s)
511 μs ± 46 μs, 1.4 MB allocated, 1.0 KB copied, 11 MB peak memory, 140% more than baseline
deep: OK (0.23s)
856 μs ± 50 μs, 3.7 MB allocated, 3.7 KB copied, 11 MB peak memory, 155% more than baseline
2000
reference (pure): OK (0.27s)
7.63 μs ± 421 ns, 31 KB allocated, 20 B copied, 11 MB peak memory, same as baseline
reference (ST): OK (0.16s)
36.3 μs ± 2.9 μs, 30 KB allocated, 20 B copied, 11 MB peak memory, same as baseline
effectful (local/static)
shallow: OK (0.23s)
13.1 μs ± 828 ns, 31 KB allocated, 21 B copied, 11 MB peak memory, same as baseline
deep: OK (0.24s)
13.9 μs ± 662 ns, 35 KB allocated, 38 B copied, 11 MB peak memory, same as baseline
effectful (local/static/state)
shallow: OK (0.21s)
12.2 μs ± 754 ns, 31 KB allocated, 21 B copied, 11 MB peak memory, 9% more than baseline
deep: OK (0.23s)
12.9 μs ± 773 ns, 35 KB allocated, 37 B copied, 11 MB peak memory, 8% more than baseline
effectful (local/static/stateM)
shallow: OK (0.20s)
90.8 μs ± 6.7 μs, 263 KB allocated, 185 B copied, 11 MB peak memory, 61% more than baseline
deep: OK (0.21s)
94.9 μs ± 5.5 μs, 266 KB allocated, 293 B copied, 11 MB peak memory, 61% more than baseline
effectful (local/dynamic)
shallow: OK (0.19s)
89.0 μs ± 5.3 μs, 203 KB allocated, 148 B copied, 11 MB peak memory, 86% more than baseline
deep: OK (0.20s)
90.3 μs ± 5.8 μs, 208 KB allocated, 244 B copied, 11 MB peak memory, 83% more than baseline
effectful (local/dynamic/double)
shallow: OK (0.18s)
162 μs ± 13 μs, 468 KB allocated, 362 B copied, 11 MB peak memory, 84% more than baseline
deep: OK (0.18s)
165 μs ± 11 μs, 468 KB allocated, 577 B copied, 11 MB peak memory, 87% more than baseline
effectful (shared/static)
shallow: OK (0.16s)
145 μs ± 14 μs, 229 KB allocated, 165 B copied, 11 MB peak memory, 121% more than baseline
deep: OK (0.16s)
145 μs ± 12 μs, 239 KB allocated, 272 B copied, 11 MB peak memory, 117% more than baseline
effectful (shared/dynamic)
shallow: OK (0.23s)
218 μs ± 11 μs, 354 KB allocated, 262 B copied, 11 MB peak memory, 138% more than baseline
deep: OK (0.24s)
220 μs ± 11 μs, 363 KB allocated, 438 B copied, 11 MB peak memory, 140% more than baseline
effectful (shared/dynamic/double)
shallow: OK (0.16s)
298 μs ± 22 μs, 619 KB allocated, 479 B copied, 11 MB peak memory, 127% more than baseline
deep: OK (0.16s)
301 μs ± 21 μs, 619 KB allocated, 768 B copied, 11 MB peak memory, 127% more than baseline
freer-simple
shallow: OK (0.18s)
161 μs ± 11 μs, 419 KB allocated, 263 B copied, 11 MB peak memory, 63% more than baseline
deep: OK (0.17s)
300 μs ± 22 μs, 2.1 MB allocated, 1.4 KB copied, 11 MB peak memory, 45% more than baseline
mtl
shallow: OK (0.23s)
424 μs ± 25 μs, 953 KB allocated, 615 B copied, 11 MB peak memory, 201% more than baseline
deep: OK (0.19s)
2.90 ms ± 182 μs, 6.0 MB allocated, 4.5 KB copied, 11 MB peak memory, 175% more than baseline
fused-effects
shallow: OK (0.17s)
625 μs ± 48 μs, 1.4 MB allocated, 900 B copied, 11 MB peak memory, 109% more than baseline
deep: OK (0.30s)
4.59 ms ± 194 μs, 10 MB allocated, 7.2 KB copied, 12 MB peak memory, 86% more than baseline
polysemy
shallow: OK (0.14s)
1.03 ms ± 92 μs, 2.8 MB allocated, 1.9 KB copied, 12 MB peak memory, 140% more than baseline
deep: OK (0.23s)
1.73 ms ± 87 μs, 7.4 MB allocated, 7.3 KB copied, 12 MB peak memory, 158% more than baseline
3000
reference (pure): OK (0.21s)
11.4 μs ± 658 ns, 46 KB allocated, 27 B copied, 12 MB peak memory, same as baseline
reference (ST): OK (0.24s)
54.7 μs ± 2.7 μs, 46 KB allocated, 28 B copied, 12 MB peak memory, same as baseline
effectful (local/static)
shallow: OK (0.18s)
19.5 μs ± 1.4 μs, 47 KB allocated, 30 B copied, 12 MB peak memory, same as baseline
deep: OK (0.18s)
19.8 μs ± 1.3 μs, 51 KB allocated, 43 B copied, 13 MB peak memory, same as baseline
effectful (local/static/state)
shallow: OK (0.29s)
16.3 μs ± 728 ns, 47 KB allocated, 30 B copied, 13 MB peak memory, same as baseline
deep: OK (0.16s)
17.2 μs ± 1.3 μs, 51 KB allocated, 43 B copied, 13 MB peak memory, same as baseline
effectful (local/static/stateM)
shallow: OK (0.16s)
139 μs ± 13 μs, 398 KB allocated, 259 B copied, 13 MB peak memory, 62% more than baseline
deep: OK (0.16s)
142 μs ± 13 μs, 398 KB allocated, 432 B copied, 13 MB peak memory, 63% more than baseline
effectful (local/dynamic)
shallow: OK (0.15s)
133 μs ± 12 μs, 303 KB allocated, 207 B copied, 13 MB peak memory, 81% more than baseline
deep: OK (0.15s)
135 μs ± 11 μs, 303 KB allocated, 343 B copied, 13 MB peak memory, 80% more than baseline
effectful (local/dynamic/double)
shallow: OK (0.14s)
244 μs ± 21 μs, 701 KB allocated, 504 B copied, 13 MB peak memory, 81% more than baseline
deep: OK (0.14s)
248 μs ± 23 μs, 701 KB allocated, 834 B copied, 13 MB peak memory, 82% more than baseline
effectful (shared/static)
shallow: OK (0.24s)
217 μs ± 11 μs, 350 KB allocated, 230 B copied, 13 MB peak memory, 123% more than baseline
deep: OK (0.24s)
218 μs ± 11 μs, 350 KB allocated, 380 B copied, 13 MB peak memory, 117% more than baseline
effectful (shared/dynamic)
shallow: OK (0.18s)
328 μs ± 25 μs, 537 KB allocated, 373 B copied, 13 MB peak memory, 135% more than baseline
deep: OK (0.18s)
323 μs ± 27 μs, 538 KB allocated, 622 B copied, 13 MB peak memory, 132% more than baseline
effectful (shared/dynamic/double)
shallow: OK (0.24s)
434 μs ± 22 μs, 926 KB allocated, 661 B copied, 13 MB peak memory, 116% more than baseline
deep: OK (0.24s)
439 μs ± 23 μs, 939 KB allocated, 1.1 KB copied, 13 MB peak memory, 116% more than baseline
freer-simple
shallow: OK (0.12s)
219 μs ± 22 μs, 615 KB allocated, 356 B copied, 13 MB peak memory, 73% more than baseline
deep: OK (0.23s)
426 μs ± 25 μs, 3.1 MB allocated, 1.8 KB copied, 13 MB peak memory, 36% more than baseline
mtl
shallow: OK (0.17s)
622 μs ± 45 μs, 1.4 MB allocated, 846 B copied, 13 MB peak memory, 191% more than baseline
deep: OK (0.28s)
4.22 ms ± 183 μs, 8.9 MB allocated, 6.2 KB copied, 13 MB peak memory, 168% more than baseline
fused-effects
shallow: OK (0.25s)
923 μs ± 50 μs, 2.1 MB allocated, 1.2 KB copied, 14 MB peak memory, 94% more than baseline
deep: OK (0.22s)
6.68 ms ± 356 μs, 16 MB allocated, 10 KB copied, 14 MB peak memory, 74% more than baseline
polysemy
shallow: OK (0.19s)
1.48 ms ± 95 μs, 4.2 MB allocated, 2.6 KB copied, 15 MB peak memory, 129% more than baseline
deep: OK (0.17s)
2.48 ms ± 219 μs, 11 MB allocated, 9.3 KB copied, 15 MB peak memory, 142% more than baseline
filesize
1000
reference: OK (0.32s)
2.43 ms ± 89 μs, 5.7 MB allocated, 687 KB copied, 21 MB peak memory, 87% more than baseline
effectful
shallow: OK (0.17s)
2.43 ms ± 190 μs, 5.8 MB allocated, 352 KB copied, 21 MB peak memory, 95% more than baseline
deep: OK (0.17s)
2.43 ms ± 209 μs, 5.8 MB allocated, 357 KB copied, 21 MB peak memory, 96% more than baseline
freer-simple
shallow: OK (0.22s)
3.30 ms ± 290 μs, 8.6 MB allocated, 759 KB copied, 21 MB peak memory, 101% more than baseline
deep: OK (0.23s)
3.44 ms ± 249 μs, 10 MB allocated, 869 KB copied, 21 MB peak memory, 96% more than baseline
mtl
shallow: OK (0.22s)
3.28 ms ± 193 μs, 7.2 MB allocated, 583 KB copied, 21 MB peak memory, 112% more than baseline
deep: OK (0.22s)
6.87 ms ± 586 μs, 15 MB allocated, 1.3 MB copied, 21 MB peak memory, 126% more than baseline
fused-effects
shallow: OK (0.18s)
5.40 ms ± 538 μs, 12 MB allocated, 1.2 MB copied, 21 MB peak memory, 107% more than baseline
deep: OK (0.16s)
10.1 ms ± 822 μs, 23 MB allocated, 1.3 MB copied, 21 MB peak memory, 87% more than baseline
polysemy
shallow: OK (0.21s)
6.51 ms ± 630 μs, 17 MB allocated, 1.6 MB copied, 22 MB peak memory, 71% more than baseline
deep: OK (0.24s)
7.46 ms ± 378 μs, 22 MB allocated, 2.2 MB copied, 23 MB peak memory, 76% more than baseline
2000
reference: OK (0.17s)
5.10 ms ± 348 μs, 11 MB allocated, 2.5 MB copied, 23 MB peak memory, 85% more than baseline
effectful
shallow: OK (0.33s)
5.07 ms ± 183 μs, 12 MB allocated, 1.6 MB copied, 23 MB peak memory, 92% more than baseline
deep: OK (0.33s)
5.07 ms ± 198 μs, 12 MB allocated, 1.6 MB copied, 23 MB peak memory, 93% more than baseline
freer-simple
shallow: OK (0.22s)
6.84 ms ± 397 μs, 17 MB allocated, 2.5 MB copied, 24 MB peak memory, 106% more than baseline
deep: OK (0.23s)
7.15 ms ± 401 μs, 21 MB allocated, 2.6 MB copied, 24 MB peak memory, 99% more than baseline
mtl
shallow: OK (0.23s)
6.98 ms ± 371 μs, 14 MB allocated, 2.5 MB copied, 24 MB peak memory, 112% more than baseline
deep: OK (0.22s)
13.8 ms ± 1.3 ms, 29 MB allocated, 3.2 MB copied, 24 MB peak memory, 119% more than baseline
fused-effects
shallow: OK (0.17s)
10.9 ms ± 1.1 ms, 24 MB allocated, 2.9 MB copied, 24 MB peak memory, 99% more than baseline
deep: OK (0.32s)
20.6 ms ± 1.4 ms, 46 MB allocated, 4.0 MB copied, 24 MB peak memory, 91% more than baseline
polysemy
shallow: OK (0.21s)
13.3 ms ± 1.3 ms, 35 MB allocated, 4.2 MB copied, 25 MB peak memory, 68% more than baseline
deep: OK (0.24s)
15.1 ms ± 956 μs, 44 MB allocated, 4.9 MB copied, 26 MB peak memory, 73% more than baseline
3000
reference: OK (0.25s)
7.78 ms ± 655 μs, 17 MB allocated, 3.9 MB copied, 27 MB peak memory, 84% more than baseline
effectful
shallow: OK (0.25s)
7.79 ms ± 408 μs, 17 MB allocated, 2.9 MB copied, 27 MB peak memory, 92% more than baseline
deep: OK (0.25s)
7.84 ms ± 407 μs, 17 MB allocated, 2.9 MB copied, 27 MB peak memory, 94% more than baseline
freer-simple
shallow: OK (0.33s)
10.3 ms ± 529 μs, 26 MB allocated, 4.1 MB copied, 28 MB peak memory, 102% more than baseline
deep: OK (0.35s)
10.8 ms ± 638 μs, 31 MB allocated, 4.1 MB copied, 28 MB peak memory, 100% more than baseline
mtl
shallow: OK (0.34s)
10.7 ms ± 695 μs, 22 MB allocated, 4.2 MB copied, 28 MB peak memory, 117% more than baseline
deep: OK (0.15s)
21.0 ms ± 2.0 ms, 43 MB allocated, 5.3 MB copied, 28 MB peak memory, 131% more than baseline
fused-effects
shallow: OK (0.26s)
16.8 ms ± 710 μs, 36 MB allocated, 5.4 MB copied, 28 MB peak memory, 108% more than baseline
deep: OK (0.10s)
30.8 ms ± 2.7 ms, 68 MB allocated, 4.5 MB copied, 28 MB peak memory, 94% more than baseline
polysemy
shallow: OK (0.31s)
20.2 ms ± 942 μs, 52 MB allocated, 7.0 MB copied, 31 MB peak memory, 67% more than baseline
deep: OK (0.35s)
22.6 ms ± 710 μs, 67 MB allocated, 7.1 MB copied, 31 MB peak memory, 72% more than baseline
All 181 tests passed (35.39s)
Edited by Andrzej Rybczak