GHC issueshttps://gitlab.haskell.org/ghc/ghc/-/issues2023-09-10T02:17:51Zhttps://gitlab.haskell.org/ghc/ghc/-/issues/22886Lack of eta-expansion causes big perf regression in text2023-09-10T02:17:51ZMatthew PickeringLack of eta-expansion causes big perf regression in textSee also #23092
On the current state of the 9.6 branch we see quite uniform regressions in performance of `text`. The benchmarks are relative to a 9.4.4 baseline.
```
All
Builder
Comparison
LazyText: OK...See also #23092
On the current state of the 9.6 branch we see quite uniform regressions in performance of `text`. The benchmarks are relative to a 9.4.4 baseline.
```
All
Builder
Comparison
LazyText: OK (0.84s)
1.40 ms ± 41 μs, same as baseline
Int
Decimal
Positive
1: OK (0.35s)
26.8 ns ± 1.6 ns, 13% less than baseline
2: OK (0.40s)
35.9 ns ± 1.4 ns, 9% less than baseline
3: OK (0.74s)
37.8 ns ± 3.7 ns, same as baseline
4: OK (0.42s)
37.4 ns ± 1.7 ns, 12% less than baseline
5: OK (6.51s)
46.7 ns ± 3.2 ns, 7% less than baseline
6: OK (6.13s)
43.9 ns ± 1.3 ns, 8% less than baseline
7: OK (0.91s)
48.2 ns ± 1.5 ns, same as baseline
8: OK (0.51s)
48.2 ns ± 4.1 ns, 17% less than baseline
9: OK (0.34s)
57.6 ns ± 5.1 ns, 8% less than baseline
10: OK (1.10s)
58.5 ns ± 1.8 ns, 22% less than baseline
11: OK (0.24s)
66.8 ns ± 6.0 ns, 16% less than baseline
12: OK (1.27s)
67.6 ns ± 1.1 ns, 15% less than baseline
13: OK (0.45s)
81.7 ns ± 4.2 ns, 12% less than baseline
14: OK (0.45s)
84.0 ns ± 5.1 ns, 10% less than baseline
15: OK (0.30s)
92.0 ns ± 9.0 ns, 13% less than baseline
16: OK (0.30s)
93.5 ns ± 8.0 ns, 11% less than baseline
17: OK (0.33s)
103 ns ± 7.0 ns, same as baseline
18: OK (0.32s)
102 ns ± 5.8 ns, 13% less than baseline
19: OK (0.34s)
110 ns ± 9.4 ns, 8% less than baseline
Negative
2: OK (0.73s)
35.7 ns ± 1.7 ns, 4% less than baseline
3: OK (0.27s)
34.4 ns ± 2.7 ns, 9% less than baseline
4: OK (0.45s)
38.4 ns ± 1.9 ns, 11% less than baseline
5: OK (0.28s)
38.3 ns ± 3.6 ns, 10% less than baseline
6: OK (0.50s)
44.8 ns ± 3.8 ns, same as baseline
7: OK (0.50s)
44.1 ns ± 1.8 ns, same as baseline
8: OK (0.34s)
51.1 ns ± 3.8 ns, same as baseline
9: OK (0.34s)
51.0 ns ± 4.3 ns, 10% less than baseline
10: OK (0.25s)
61.3 ns ± 6.1 ns, same as baseline
11: OK (0.38s)
59.4 ns ± 5.8 ns, same as baseline
12: OK (0.42s)
69.8 ns ± 2.7 ns, same as baseline
13: OK (0.42s)
69.7 ns ± 3.2 ns, same as baseline
14: OK (0.30s)
85.8 ns ± 7.2 ns, same as baseline
15: OK (0.88s)
87.5 ns ± 6.1 ns, same as baseline
16: OK (0.33s)
94.6 ns ± 5.9 ns, 11% less than baseline
17: OK (0.33s)
94.1 ns ± 7.6 ns, same as baseline
18: OK (0.37s)
116 ns ± 8.4 ns, 8% more than baseline
19: OK (0.37s)
106 ns ± 9.6 ns, same as baseline
20: OK (0.24s)
115 ns ± 11 ns, same as baseline
Empty: OK (0.54s)
23.3 ns ± 1.6 ns, 10% less than baseline
Show
1: OK (0.53s)
11.1 ns ± 836 ps, 20% less than baseline
2: OK (0.31s)
19.5 ns ± 1.5 ns, same as baseline
3: OK (0.67s)
31.1 ns ± 850 ps, same as baseline
4: OK (0.31s)
40.4 ns ± 3.2 ns, 17% less than baseline
5: OK (0.35s)
49.6 ns ± 4.1 ns, 14% less than baseline
6: OK (0.68s)
64.1 ns ± 3.1 ns, same as baseline
7: OK (0.46s)
72.6 ns ± 3.8 ns, same as baseline
8: OK (0.47s)
83.9 ns ± 4.0 ns, 7% less than baseline
9: OK (0.54s)
95.3 ns ± 3.2 ns, same as baseline
10: OK (0.60s)
107 ns ± 9.8 ns, 15% less than baseline
11: OK (1.15s)
119 ns ± 2.6 ns, same as baseline
12: OK (0.26s)
128 ns ± 12 ns, 16% less than baseline
13: OK (0.44s)
143 ns ± 13 ns, same as baseline
14: OK (0.46s)
154 ns ± 8.6 ns, 7% less than baseline
15: OK (0.46s)
164 ns ± 12 ns, same as baseline
16: OK (0.51s)
176 ns ± 8.1 ns, 4% less than baseline
17: OK (0.31s)
184 ns ± 12 ns, same as baseline
18: OK (0.34s)
196 ns ± 17 ns, same as baseline
19: OK (0.36s)
208 ns ± 16 ns, same as baseline
Concat
append: OK (0.51s)
41.5 ns ± 2.5 ns, 6% less than baseline
concat: OK (0.28s)
135 ns ± 12 ns, same as baseline
write: OK (0.33s)
43.3 ns ± 4.1 ns, same as baseline
DecodeUtf8
html
Strict: OK (0.80s)
39.6 μs ± 700 ns, 14% less than baseline
Stream: OK (0.80s)
41.0 μs ± 985 ns, 21% less than baseline
StrictLength: OK (0.44s)
79.3 μs ± 3.1 μs, same as baseline
StrictInitLength: OK (0.43s)
77.6 μs ± 7.7 μs, same as baseline
Lazy: OK (0.47s)
41.8 μs ± 3.2 μs, 15% less than baseline
LazyLength: OK (0.44s)
80.1 μs ± 5.2 μs, same as baseline
LazyInitLength: OK (0.77s)
77.8 μs ± 4.3 μs, 8% less than baseline
xml
Strict: OK (1.26s)
8.95 ms ± 816 μs, same as baseline
Stream: OK (0.15s)
17.3 ms ± 1.7 ms, 11% less than baseline
StrictLength: OK (0.56s)
15.4 ms ± 1.5 ms, 13% less than baseline
StrictInitLength: OK (0.58s)
15.9 ms ± 461 μs, same as baseline
Lazy: OK (0.31s)
18.0 ms ± 849 μs, same as baseline
LazyLength: OK (0.56s)
15.8 ms ± 617 μs, same as baseline
LazyInitLength: OK (0.29s)
16.0 ms ± 1.3 ms, same as baseline
ascii
Strict: OK (1.19s)
8.35 ms ± 111 μs, 5% less than baseline
Stream: OK (0.37s)
23.4 ms ± 853 μs, same as baseline
StrictLength: OK (1.11s)
15.6 ms ± 1.0 ms, 15% less than baseline
StrictInitLength: OK (1.10s)
15.6 ms ± 966 μs, 8% less than baseline
Lazy: OK (0.36s)
22.9 ms ± 1.4 ms, 6% less than baseline
LazyLength: OK (0.54s)
15.7 ms ± 364 μs, 12% less than baseline
LazyInitLength: OK (0.29s)
16.4 ms ± 1.6 ms, 10% less than baseline
russian
Strict: OK (0.48s)
676 μs ± 58 μs, same as baseline
Stream: OK (0.59s)
952 μs ± 37 μs, same as baseline
StrictLength: OK (0.42s)
1.40 ms ± 57 μs, same as baseline
StrictInitLength: OK (0.82s)
1.35 ms ± 85 μs, same as baseline
Lazy: OK (0.33s)
968 μs ± 64 μs, same as baseline
LazyLength: OK (0.26s)
1.55 ms ± 101 μs, same as baseline
LazyInitLength: OK (0.26s)
1.55 ms ± 120 μs, same as baseline
japanese
Strict: OK (0.61s)
1.73 μs ± 113 ns, same as baseline
Stream: OK (0.63s)
1.80 μs ± 61 ns, 5% less than baseline
StrictLength: OK (0.35s)
3.23 μs ± 246 ns, same as baseline
StrictInitLength: OK (0.36s)
3.42 μs ± 209 ns, same as baseline
Lazy: OK (0.39s)
1.90 μs ± 114 ns, same as baseline
LazyLength: OK (0.55s)
3.25 μs ± 149 ns, same as baseline
LazyInitLength: OK (0.35s)
3.37 μs ± 165 ns, same as baseline
ascii
strict decodeUtf8: OK (1.20s)
8.22 ms ± 246 μs, same as baseline
strict decodeLatin1: OK (0.69s)
8.78 ms ± 651 μs, same as baseline
strict decodeASCII: OK (2.38s)
8.69 ms ± 525 μs, same as baseline
lazy decodeUtf8: OK (0.40s)
25.4 ms ± 2.0 ms, same as baseline
lazy decodeLatin1: OK (0.65s)
40.3 ms ± 861 μs, 8% more than baseline
lazy decodeASCII: OK (0.38s)
23.3 ms ± 1.5 ms, same as baseline
EncodeUtf8
non-ASCII
Text: OK (0.36s)
210 μs ± 21 μs, 14% more than baseline
LazyText: OK (0.67s)
276 μs ± 16 μs, 7% less than baseline
Text/encodeUtf8Builder: OK (0.28s)
390 μs ± 31 μs, same as baseline
Text/encodeUtf8BuilderEscaped: OK (0.28s)
1.71 ms ± 95 μs, same as baseline
ASCII
Text: OK (0.57s)
100 μs ± 5.3 μs, 11% less than baseline
LazyText: OK (0.29s)
93.0 μs ± 7.2 μs, 8% less than baseline
Text/encodeUtf8Builder: OK (0.33s)
112 μs ± 7.5 μs, same as baseline
Text/encodeUtf8BuilderEscaped: OK (0.36s)
535 μs ± 35 μs, same as baseline
Equality
Text: OK (0.50s)
8.59 ns ± 688 ps, 15% more than baseline
LazyText: OK (0.40s)
12.0 ns ± 966 ps, same as baseline
FileRead
Text: OK (0.36s)
21.4 ms ± 704 μs, 9% more than baseline
LazyText: OK (0.17s)
20.5 ms ± 1.8 ms, 14% more than baseline
TextByteString: OK (0.42s)
2.47 ms ± 237 μs, same as baseline
LazyTextByteString: OK (0.21s)
2.39 ms ± 232 μs, same as baseline
ReadLines
Text: OK (0.22s)
27.0 ms ± 2.2 ms, same as baseline
Multilang
find_first: OK (0.17s)
19.7 ms ± 1.5 ms, 10% more than baseline
find_index: OK (0.77s)
544 ns ± 18 ns, same as baseline
Pure
tiny
append
Text: OK (0.37s)
18.4 ns ± 1.3 ns, same as baseline
LazyText: OK (0.50s)
17.3 ns ± 1.1 ns, same as baseline
concat
Text: OK (0.77s)
16.0 ns ± 534 ps, same as baseline
LazyText: OK (0.49s)
16.8 ns ± 1.6 ns, same as baseline
cons
Text: OK (0.39s)
47.9 ns ± 4.3 ns, same as baseline
LazyText: OK (0.32s)
15.3 ns ± 1.5 ns, same as baseline
decode
Text: OK (0.63s)
24.2 ns ± 1.5 ns, same as baseline
LazyText: OK (0.40s)
105 ns ± 9.7 ns, same as baseline
decode'
Text: OK (0.48s)
34.1 ns ± 2.8 ns, same as baseline
LazyText: OK (0.44s)
119 ns ± 9.6 ns, same as baseline
drop
Text: OK (0.47s)
15.4 ns ± 1.2 ns, same as baseline
LazyText: OK (0.52s)
19.1 ns ± 970 ps, same as baseline
encode
Text: OK (0.77s)
16.3 ns ± 1.0 ns, same as baseline
LazyText: OK (0.42s)
26.9 ns ± 1.7 ns, same as baseline
filter
Text: OK (0.61s)
23.7 ns ± 1.6 ns, same as baseline
LazyText: OK (0.41s)
25.4 ns ± 1.3 ns, same as baseline
filter.filter
Text: OK (0.40s)
24.4 ns ± 2.0 ns, same as baseline
LazyText: OK (1.10s)
26.1 ns ± 1.4 ns, same as baseline
foldl'
Text: OK (0.64s)
26.0 ns ± 778 ps, same as baseline
LazyText: OK (0.30s)
58.1 ns ± 5.6 ns, 19% more than baseline
foldr
Text: OK (0.44s)
58.9 ns ± 3.9 ns, 10% more than baseline
LazyText: OK (0.37s)
89.4 ns ± 5.8 ns, same as baseline
head
Text: OK (0.73s)
7.72 ns ± 526 ps, 16% more than baseline
LazyText: OK (0.67s)
13.5 ns ± 486 ps, 6% more than baseline
init
Text: OK (0.34s)
8.34 ns ± 704 ps, same as baseline
LazyText: OK (0.63s)
12.3 ns ± 1.2 ns, same as baseline
intercalate
Text: OK (0.61s)
23.6 ns ± 1.5 ns, 8% more than baseline
LazyText: OK (0.89s)
20.6 ns ± 888 ps, 11% more than baseline
intersperse
Text: OK (0.55s)
42.0 ns ± 2.4 ns, same as baseline
LazyText: OK (0.67s)
239 ns ± 9.0 ns, 9% more than baseline
isInfixOf
Text: OK (1.39s)
70.7 ns ± 5.4 ns, 17% less than baseline
LazyText: OK (0.48s)
71.3 ns ± 7.1 ns, 16% more than baseline
last
Text: OK (0.33s)
7.09 ns ± 644 ps, 16% more than baseline
LazyText: OK (0.75s)
8.09 ns ± 622 ps, 8% more than baseline
map
Text: OK (0.48s)
34.4 ns ± 2.1 ns, same as baseline
LazyText: OK (0.36s)
41.8 ns ± 3.5 ns, same as baseline
mapAccumL
Text: OK (0.80s)
36.0 ns ± 1.1 ns, 9% more than baseline
LazyText: OK (0.50s)
75.0 ns ± 2.8 ns, 10% more than baseline
mapAccumR
Text: OK (0.48s)
35.4 ns ± 2.4 ns, same as baseline
LazyText: OK (0.49s)
70.5 ns ± 5.9 ns, 9% more than baseline
map.map
Text: OK (0.33s)
36.5 ns ± 2.9 ns, same as baseline
LazyText: OK (0.36s)
43.6 ns ± 3.6 ns, same as baseline
replicate char
Text: OK (0.31s)
31.2 ns ± 2.8 ns, 11% more than baseline
LazyText: OK (0.33s)
74.0 ns ± 6.9 ns, same as baseline
replicate string
Text: OK (0.45s)
7.99 ns ± 402 ps, same as baseline
LazyText: OK (0.40s)
54.9 ns ± 4.9 ns, 28% more than baseline
reverse
Text: OK (0.45s)
15.3 ns ± 762 ps, 11% more than baseline
LazyText: OK (0.59s)
23.7 ns ± 1.3 ns, same as baseline
take
Text: OK (1.20s)
14.5 ns ± 634 ps, 8% more than baseline
LazyText: OK (0.50s)
18.1 ns ± 668 ps, same as baseline
tail
Text: OK (0.86s)
9.89 ns ± 398 ps, 12% more than baseline
LazyText: OK (0.36s)
10.3 ns ± 982 ps, same as baseline
toLower
Text: OK (0.61s)
50.3 ns ± 2.1 ns, 75% more than baseline
LazyText: OK (0.32s)
34.8 ns ± 3.1 ns, same as baseline
toUpper
Text: OK (0.28s)
55.8 ns ± 5.5 ns, 89% more than baseline
LazyText: OK (0.33s)
37.2 ns ± 2.8 ns, same as baseline
uncons
Text: OK (2.16s)
13.6 ns ± 150 ps, 10% more than baseline
LazyText: OK (1.14s)
27.9 ns ± 1.6 ns, 19% more than baseline
words
Text: OK (0.52s)
20.2 ns ± 1.1 ns, 8% more than baseline
LazyText: OK (0.42s)
55.6 ns ± 3.8 ns, 15% more than baseline
zipWith
Text: OK (0.66s)
117 ns ± 5.9 ns, 18% more than baseline
LazyText: OK (0.30s)
265 ns ± 23 ns, 23% more than baseline
length
cons
Text: OK (0.38s)
21.0 ns ± 1.7 ns, 11% more than baseline
LazyText: OK (0.42s)
23.7 ns ± 2.0 ns, 15% more than baseline
decode
Text: OK (0.58s)
38.8 ns ± 2.7 ns, 14% more than baseline
LazyText: OK (0.34s)
152 ns ± 11 ns, 34% more than baseline
drop
Text: OK (0.43s)
26.0 ns ± 1.7 ns, same as baseline
LazyText: OK (0.41s)
28.0 ns ± 2.5 ns, same as baseline
filter
Text: OK (0.54s)
19.2 ns ± 1.7 ns, 26% more than baseline
LazyText: OK (0.31s)
28.6 ns ± 2.8 ns, 20% more than baseline
filter.filter
Text: OK (0.54s)
19.2 ns ± 758 ps, 25% more than baseline
LazyText: OK (0.75s)
28.8 ns ± 2.7 ns, 21% more than baseline
init
Text: OK (0.36s)
20.2 ns ± 1.9 ns, 21% more than baseline
LazyText: OK (1.02s)
24.3 ns ± 2.0 ns, same as baseline
intercalate
Text: OK (0.39s)
23.9 ns ± 1.8 ns, same as baseline
LazyText: OK (0.40s)
25.3 ns ± 2.0 ns, same as baseline
intersperse
Text: OK (0.37s)
22.6 ns ± 1.8 ns, same as baseline
LazyText: OK (0.57s)
22.9 ns ± 936 ps, same as baseline
map
Text: OK (0.35s)
20.6 ns ± 1.3 ns, same as baseline
LazyText: OK (0.37s)
22.4 ns ± 1.8 ns, same as baseline
map.map
Text: OK (0.90s)
20.7 ns ± 840 ps, 7% more than baseline
LazyText: OK (0.57s)
22.2 ns ± 1.6 ns, same as baseline
replicate char
Text: OK (0.85s)
19.7 ns ± 1.2 ns, same as baseline
LazyText: OK (0.32s)
16.8 ns ± 1.4 ns, same as baseline
replicate string
Text: OK (3.09s)
21.1 ns ± 362 ps, same as baseline
LazyText: OK (0.49s)
18.3 ns ± 848 ps, 13% more than baseline
take
Text: OK (0.52s)
19.6 ns ± 826 ps, same as baseline
LazyText: OK (1.00s)
24.4 ns ± 502 ps, 9% more than baseline
tail
Text: OK (0.96s)
21.9 ns ± 1.3 ns, 9% more than baseline
LazyText: OK (0.43s)
25.8 ns ± 2.2 ns, 17% more than baseline
toLower
Text: OK (0.62s)
49.9 ns ± 4.6 ns, 21% more than baseline
LazyText: OK (0.32s)
60.3 ns ± 5.5 ns, 22% more than baseline
toUpper
Text: OK (0.54s)
42.5 ns ± 1.9 ns, same as baseline
LazyText: OK (0.66s)
59.1 ns ± 2.0 ns, 17% more than baseline
words
Text: OK (13.16s)
23.6 ns ± 1.3 ns, 16% more than baseline
LazyText: OK (0.57s)
46.1 ns ± 2.0 ns, 34% more than baseline
zipWith
Text: OK (0.56s)
21.6 ns ± 1.5 ns, same as baseline
LazyText: OK (0.39s)
23.7 ns ± 2.1 ns, same as baseline
Builder
mappend char: OK (0.33s)
13.1 μs ± 1.2 μs, same as baseline
mappend 8 char: OK (0.60s)
48.3 ns ± 4.2 ns, 10% more than baseline
mappend text: OK (0.34s)
59.4 μs ± 5.0 μs, same as baseline
ascii-small
append
Text: OK (0.34s)
13.3 μs ± 727 ns, same as baseline
LazyText: OK (0.51s)
70.9 ns ± 6.3 ns, 43% more than baseline
concat
Text: OK (0.34s)
25.3 μs ± 1.8 μs, 13% more than baseline
LazyText: OK (1.39s)
9.29 μs ± 307 ns, 11% more than baseline
cons
Text: OK (0.34s)
495 μs ± 49 μs, 27% more than baseline
LazyText: OK (0.53s)
18.7 ns ± 1.2 ns, 13% more than baseline
decode
Text: OK (0.37s)
6.97 μs ± 438 ns, 8% less than baseline
LazyText: OK (0.64s)
7.41 μs ± 579 ns, same as baseline
decode'
Text: OK (0.60s)
7.02 μs ± 453 ns, same as baseline
LazyText: OK (0.24s)
7.43 μs ± 682 ns, same as baseline
drop
Text: OK (0.32s)
2.74 μs ± 218 ns, same as baseline
LazyText: OK (0.33s)
2.78 μs ± 164 ns, same as baseline
encode
Text: OK (0.34s)
6.16 μs ± 433 ns, 7% less than baseline
LazyText: OK (0.39s)
7.64 μs ± 520 ns, same as baseline
filter
Text: OK (0.35s)
125 μs ± 8.1 μs, 9% more than baseline
LazyText: OK (0.22s)
124 μs ± 11 μs, same as baseline
filter.filter
Text: OK (0.35s)
123 μs ± 6.6 μs, same as baseline
LazyText: OK (0.22s)
123 μs ± 11 μs, same as baseline
foldl'
Text: OK (0.40s)
308 μs ± 25 μs, 16% more than baseline
LazyText: OK (0.24s)
662 μs ± 62 μs, 17% more than baseline
foldr
Text: OK (0.23s)
682 μs ± 59 μs, 12% more than baseline
LazyText: OK (0.39s)
1.25 ms ± 110 μs, 14% more than baseline
head
Text: OK (0.33s)
7.50 ns ± 698 ps, 10% more than baseline
LazyText: OK (0.69s)
14.2 ns ± 854 ps, 10% more than baseline
init
Text: OK (0.80s)
8.54 ns ± 362 ps, 9% more than baseline
LazyText: OK (0.69s)
57.3 ns ± 4.2 ns, 15% more than baseline
intercalate
Text: OK (0.41s)
74.3 μs ± 4.1 μs, 12% more than baseline
LazyText: OK (0.22s)
27.4 μs ± 2.7 μs, 12% more than baseline
intersperse
Text: OK (0.26s)
170 μs ± 11 μs, same as baseline
LazyText: OK (0.36s)
2.32 ms ± 178 μs, 11% more than baseline
isInfixOf
Text: OK (0.40s)
917 ns ± 44 ns, same as baseline
LazyText: OK (0.27s)
1.93 μs ± 170 ns, same as baseline
last
Text: OK (0.46s)
6.91 ns ± 656 ps, 15% more than baseline
LazyText: OK (0.43s)
12.7 ns ± 1.0 ns, same as baseline
map
Text: OK (0.21s)
255 μs ± 22 μs, same as baseline
LazyText: OK (0.22s)
259 μs ± 23 μs, 10% more than baseline
mapAccumL
Text: OK (0.53s)
857 μs ± 63 μs, same as baseline
LazyText: OK (0.25s)
685 μs ± 54 μs, same as baseline
mapAccumR
Text: OK (0.33s)
971 μs ± 56 μs, same as baseline
LazyText: OK (0.48s)
769 μs ± 53 μs, same as baseline
map.map
Text: OK (0.23s)
286 μs ± 24 μs, same as baseline
LazyText: OK (0.23s)
284 μs ± 27 μs, same as baseline
replicate char
Text: OK (0.36s)
13.1 μs ± 1.3 μs, same as baseline
LazyText: OK (0.37s)
3.32 μs ± 224 ns, 18% more than baseline
replicate string
Text: OK (0.36s)
13.3 μs ± 948 ns, same as baseline
LazyText: OK (0.60s)
3.39 μs ± 324 ns, 19% more than baseline
reverse
Text: OK (0.38s)
31.8 μs ± 1.6 μs, 26% more than baseline
LazyText: OK (0.39s)
31.9 μs ± 2.5 μs, 26% more than baseline
take
Text: OK (0.33s)
2.73 μs ± 211 ns, same as baseline
LazyText: OK (0.34s)
2.83 μs ± 231 ns, same as baseline
tail
Text: OK (0.59s)
10.5 ns ± 380 ps, 14% more than baseline
LazyText: OK (0.45s)
13.6 ns ± 1.1 ns, 11% more than baseline
toLower
Text: OK (0.29s)
402 μs ± 22 μs, 159% more than baseline
LazyText: OK (0.26s)
159 μs ± 12 μs, same as baseline
toUpper
Text: OK (0.38s)
569 μs ± 46 μs, 135% more than baseline
LazyText: OK (0.22s)
253 μs ± 25 μs, same as baseline
uncons
Text: OK (0.75s)
15.5 ns ± 438 ps, 16% more than baseline
LazyText: OK (0.37s)
19.6 ns ± 1.6 ns, 17% more than baseline
words
Text: OK (0.39s)
287 μs ± 12 μs, same as baseline
LazyText: OK (0.54s)
893 μs ± 65 μs, 25% more than baseline
zipWith
Text: OK (0.40s)
1.27 ms ± 64 μs, 13% more than baseline
LazyText: OK (0.22s)
2.64 ms ± 192 μs, 17% more than baseline
length
cons
Text: OK (0.41s)
8.15 μs ± 345 ns, same as baseline
LazyText: OK (0.28s)
8.48 μs ± 791 ns, same as baseline
decode
Text: OK (0.39s)
15.4 μs ± 1.1 μs, same as baseline
LazyText: OK (0.41s)
16.1 μs ± 1.2 μs, 8% more than baseline
drop
Text: OK (0.28s)
8.50 μs ± 676 ns, same as baseline
LazyText: OK (0.28s)
8.58 μs ± 819 ns, same as baseline
filter
Text: OK (0.33s)
206 μs ± 17 μs, 88% more than baseline
LazyText: OK (0.23s)
125 μs ± 12 μs, same as baseline
filter.filter
Text: OK (0.31s)
205 μs ± 14 μs, 88% more than baseline
LazyText: OK (0.23s)
124 μs ± 12 μs, same as baseline
init
Text: OK (0.27s)
8.19 μs ± 704 ns, same as baseline
LazyText: OK (0.28s)
8.41 μs ± 819 ns, same as baseline
intercalate
Text: OK (0.43s)
18.0 μs ± 1.3 μs, 16% more than baseline
LazyText: OK (0.30s)
20.1 μs ± 1.8 μs, same as baseline
intersperse
Text: OK (0.28s)
8.15 μs ± 708 ns, same as baseline
LazyText: OK (0.28s)
8.39 μs ± 786 ns, same as baseline
map
Text: OK (0.28s)
8.12 μs ± 667 ns, same as baseline
LazyText: OK (0.28s)
8.44 μs ± 762 ns, same as baseline
map.map
Text: OK (0.27s)
8.13 μs ± 812 ns, same as baseline
LazyText: OK (0.43s)
8.50 μs ± 488 ns, same as baseline
replicate char
Text: OK (0.40s)
20.3 ns ± 2.0 ns, same as baseline
LazyText: OK (0.39s)
18.2 ns ± 1.6 ns, 20% more than baseline
replicate string
Text: OK (0.41s)
22.2 ns ± 1.9 ns, same as baseline
LazyText: OK (0.38s)
18.2 ns ± 1.7 ns, same as baseline
take
Text: OK (0.33s)
5.53 μs ± 406 ns, same as baseline
LazyText: OK (0.36s)
5.75 μs ± 539 ns, same as baseline
tail
Text: OK (0.30s)
8.80 μs ± 657 ns, same as baseline
LazyText: OK (0.46s)
8.87 μs ± 592 ns, same as baseline
toLower
Text: OK (0.49s)
182 μs ± 7.5 μs, 13% more than baseline
LazyText: OK (0.28s)
173 μs ± 16 μs, same as baseline
toUpper
Text: OK (0.39s)
268 μs ± 25 μs, same as baseline
LazyText: OK (0.39s)
272 μs ± 25 μs, 11% more than baseline
words
Text: OK (0.41s)
292 μs ± 26 μs, 13% more than baseline
LazyText: OK (0.47s)
742 μs ± 67 μs, 35% more than baseline
zipWith
Text: OK (0.28s)
8.31 μs ± 714 ns, same as baseline
LazyText: OK (0.44s)
8.55 μs ± 634 ns, same as baseline
Builder
mappend char: OK (0.37s)
13.7 μs ± 768 ns, 9% more than baseline
mappend 8 char: OK (0.45s)
51.3 ns ± 4.0 ns, 15% more than baseline
mappend text: OK (0.24s)
60.7 μs ± 5.6 μs, same as baseline
ascii
append
Text: OK (1.03s)
16.1 ms ± 374 μs, 47% more than baseline
LazyText: OK (5.54s)
62.0 μs ± 1.7 μs, 38% more than baseline
concat
Text: OK (3.86s)
114 ms ± 11 ms, 15% more than baseline
LazyText: OK (0.69s)
20.4 ms ± 1.3 ms, 28% more than baseline
cons
Text: OK (3.72s)
494 ms ± 25 ms, 23% more than baseline
LazyText: OK (1.50s)
12.3 μs ± 695 ns, 14% more than baseline
decode
Text: OK (0.91s)
13.3 ms ± 721 μs, 43% more than baseline
LazyText: OK (1.02s)
46.7 ms ± 4.0 ms, 14% more than baseline
decode'
Text: OK (1.40s)
12.3 ms ± 960 μs, 37% more than baseline
LazyText: OK (1.04s)
48.8 ms ± 4.2 ms, 19% more than baseline
drop
Text: OK (2.29s)
2.78 ms ± 70 μs, 20% more than baseline
LazyText: OK (0.74s)
2.83 ms ± 248 μs, 18% more than baseline
encode
Text: OK (2.95s)
8.32 ms ± 723 μs, 43% more than baseline
LazyText: OK (1.00s)
46.3 ms ± 1.5 ms, 15% more than baseline
filter
Text: OK (0.53s)
110 ms ± 3.6 ms, 10% more than baseline
LazyText: OK (0.53s)
111 ms ± 4.0 ms, 14% more than baseline
filter.filter
Text: OK (0.53s)
111 ms ± 3.9 ms, 13% more than baseline
LazyText: OK (0.52s)
111 ms ± 5.4 ms, 13% more than baseline
foldl'
Text: OK (1.25s)
356 ms ± 2.9 ms, 45% more than baseline
LazyText: OK (2.42s)
745 ms ± 21 ms, 43% more than baseline
foldr
Text: OK (2.56s)
794 ms ± 17 ms, 38% more than baseline
LazyText: OK (4.51s)
1.450 s ± 109 ms, 41% more than baseline
head
Text: OK (2.69s)
9.82 ns ± 644 ps, 43% more than baseline
LazyText: OK (2.95s)
17.9 ns ± 460 ps, 34% more than baseline
init
Text: OK (2.71s)
10.8 ns ± 1.1 ns, 33% more than baseline
LazyText: OK (1.40s)
65.8 μs ± 5.5 μs, 53% more than baseline
intercalate
Text: OK (40.91s)
312 ms ± 7.9 ms, 23% more than baseline
LazyText: OK (5.14s)
148 ms ± 7.4 ms, 18% more than baseline
intersperse
Text: OK (2.88s)
155 ms ± 15 ms, 12% more than baseline
LazyText: OK (8.65s)
2.824 s ± 32 ms, 38% more than baseline
isInfixOf
Text: OK (0.82s)
3.83 ms ± 212 μs, 38% more than baseline
LazyText: OK (0.61s)
4.41 ms ± 421 μs, 32% more than baseline
last
Text: OK (3.74s)
8.98 ns ± 486 ps, 44% more than baseline
LazyText: OK (1.54s)
13.4 μs ± 664 ns, 18% more than baseline
map
Text: OK (0.92s)
242 ms ± 22 ms, same as baseline
LazyText: OK (0.93s)
245 ms ± 11 ms, 13% more than baseline
mapAccumL
Text: OK (6.35s)
2.050 s ± 114 ms, 28% more than baseline
LazyText: OK (4.16s)
1.307 s ± 76 ms, 14% more than baseline
mapAccumR
Text: OK (6.38s)
2.065 s ± 170 ms, 30% more than baseline
LazyText: OK (10.20s)
1.405 s ± 43 ms, 20% more than baseline
map.map
Text: OK (1.02s)
270 ms ± 22 ms, same as baseline
LazyText: OK (0.99s)
264 ms ± 11 ms, 10% more than baseline
replicate char
Text: OK (1.69s)
15.8 ms ± 905 μs, 53% more than baseline
LazyText: OK (2.07s)
520 μs ± 7.7 μs, 149% more than baseline
replicate string
Text: OK (1.84s)
16.7 ms ± 365 μs, 64% more than baseline
LazyText: OK (2.09s)
491 μs ± 33 μs, 125% more than baseline
reverse
Text: OK (1.46s)
30.4 ms ± 1.3 ms, 26% more than baseline
LazyText: OK (1.36s)
70.0 ms ± 4.5 ms, 26% more than baseline
take
Text: OK (0.80s)
3.13 ms ± 182 μs, 35% more than baseline
LazyText: OK (0.68s)
3.01 ms ± 193 μs, 26% more than baseline
tail
Text: OK (6.45s)
13.8 ns ± 150 ps, 41% more than baseline
LazyText: OK (1.54s)
12.5 μs ± 741 ns, 17% more than baseline
toLower
Text: OK (1.49s)
429 ms ± 29 ms, 218% more than baseline
LazyText: OK (0.65s)
149 ms ± 7.8 ms, 8% more than baseline
toUpper
Text: OK (4.64s)
616 ms ± 23 ms, 182% more than baseline
LazyText: OK (0.92s)
237 ms ± 15 ms, 8% more than baseline
uncons
Text: OK (3.03s)
18.3 ns ± 770 ps, 33% more than baseline
LazyText: OK (1.33s)
12.1 μs ± 879 ns, 8% more than baseline
words
Text: OK (10.63s)
1.271 s ± 78 ms, 10% more than baseline
LazyText: OK (19.63s)
2.550 s ± 170 ms, 25% more than baseline
zipWith
Text: OK (4.41s)
1.420 s ± 76 ms, 37% more than baseline
LazyText: OK (9.80s)
3.187 s ± 249 ms, 45% more than baseline
length
cons
Text: OK (0.75s)
8.34 ms ± 337 μs, 19% more than baseline
LazyText: OK (0.74s)
8.35 ms ± 362 μs, 18% more than baseline
decode
Text: OK (1.24s)
23.0 ms ± 2.0 ms, 41% more than baseline
LazyText: OK (0.68s)
19.6 ms ± 1.3 ms, 18% more than baseline
drop
Text: OK (0.74s)
8.58 ms ± 371 μs, 22% more than baseline
LazyText: OK (1.13s)
8.87 ms ± 671 μs, 21% more than baseline
filter
Text: OK (0.74s)
181 ms ± 7.3 ms, 92% more than baseline
LazyText: OK (0.43s)
111 ms ± 4.2 ms, 12% more than baseline
filter.filter
Text: OK (0.74s)
183 ms ± 3.1 ms, 90% more than baseline
LazyText: OK (0.52s)
111 ms ± 3.7 ms, 12% more than baseline
init
Text: OK (0.72s)
8.18 ms ± 381 μs, 20% more than baseline
LazyText: OK (0.74s)
8.70 ms ± 516 μs, 17% more than baseline
intercalate
Text: OK (0.63s)
16.5 ms ± 917 μs, 15% more than baseline
LazyText: OK (0.40s)
16.7 ms ± 1.5 ms, 15% more than baseline
intersperse
Text: OK (0.50s)
8.06 ms ± 780 μs, 16% more than baseline
LazyText: OK (0.74s)
8.59 ms ± 761 μs, 19% more than baseline
map
Text: OK (0.73s)
8.11 ms ± 376 μs, 16% more than baseline
LazyText: OK (0.74s)
8.60 ms ± 514 μs, 18% more than baseline
map.map
Text: OK (1.09s)
8.21 ms ± 595 μs, 17% more than baseline
LazyText: OK (0.74s)
8.29 ms ± 598 μs, 14% more than baseline
replicate char
Text: OK (2.37s)
22.8 ns ± 1.8 ns, 21% more than baseline
LazyText: OK (2.35s)
20.3 ns ± 1.8 ns, 30% more than baseline
replicate string
Text: OK (2.39s)
24.7 ns ± 1.4 ns, 15% more than baseline
LazyText: OK (2.35s)
20.6 ns ± 1.6 ns, 21% more than baseline
take
Text: OK (0.91s)
5.44 ms ± 238 μs, 19% more than baseline
LazyText: OK (1.35s)
5.36 ms ± 157 μs, 14% more than baseline
tail
Text: OK (0.74s)
8.50 ms ± 675 μs, 15% more than baseline
LazyText: OK (0.51s)
8.44 ms ± 746 μs, 16% more than baseline
toLower
Text: OK (0.72s)
177 ms ± 4.9 ms, 24% more than baseline
LazyText: OK (0.65s)
151 ms ± 3.9 ms, 10% more than baseline
toUpper
Text: OK (0.95s)
251 ms ± 25 ms, 11% more than baseline
LazyText: OK (0.91s)
240 ms ± 3.3 ms, 11% more than baseline
words
Text: OK (1.05s)
287 ms ± 4.7 ms, 22% more than baseline
LazyText: OK (2.46s)
758 ms ± 11 ms, 47% more than baseline
zipWith
Text: OK (1.10s)
8.24 ms ± 259 μs, 20% more than baseline
LazyText: OK (1.11s)
8.40 ms ± 248 μs, 14% more than baseline
Builder
mappend char: OK (1.56s)
14.6 μs ± 797 ns, 15% more than baseline
mappend 8 char: OK (2.75s)
63.0 ns ± 4.0 ns, 32% more than baseline
mappend text: OK (1.41s)
66.7 μs ± 5.3 μs, 15% more than baseline
english
append
Text: OK (0.53s)
1.22 ms ± 95 μs, 52% more than baseline
LazyText: OK (0.41s)
4.07 μs ± 331 ns, 24% more than baseline
concat
Text: OK (0.30s)
2.85 ms ± 271 μs, 46% more than baseline
LazyText: OK (1.58s)
650 μs ± 8.9 μs, 45% more than baseline
cons
Text: OK (0.62s)
37.6 ms ± 2.1 ms, 32% more than baseline
LazyText: OK (0.66s)
271 ns ± 17 ns, 11% more than baseline
decode
Text: OK (0.52s)
573 μs ± 54 μs, 68% more than baseline
LazyText: OK (0.38s)
825 μs ± 62 μs, 47% more than baseline
decode'
Text: OK (1.38s)
517 μs ± 21 μs, 48% more than baseline
LazyText: OK (1.06s)
827 μs ± 61 μs, 45% more than baseline
drop
Text: OK (0.94s)
172 μs ± 14 μs, 14% more than baseline
LazyText: OK (0.38s)
176 μs ± 16 μs, 11% more than baseline
encode
Text: OK (0.80s)
510 μs ± 41 μs, 63% more than baseline
LazyText: OK (0.38s)
803 μs ± 61 μs, 37% more than baseline
filter
Text: OK (0.33s)
7.39 ms ± 394 μs, 13% more than baseline
LazyText: OK (0.59s)
7.38 ms ± 205 μs, 13% more than baseline
filter.filter
Text: OK (0.19s)
7.39 ms ± 729 μs, 13% more than baseline
LazyText: OK (0.33s)
7.37 ms ± 434 μs, 14% more than baseline
foldl'
Text: OK (0.23s)
23.9 ms ± 1.4 ms, 39% more than baseline
LazyText: OK (0.20s)
51.5 ms ± 4.0 ms, 41% more than baseline
foldr
Text: OK (0.92s)
57.0 ms ± 4.2 ms, 35% more than baseline
LazyText: OK (0.75s)
101 ms ± 4.8 ms, 38% more than baseline
head
Text: OK (0.81s)
9.73 ns ± 520 ps, 34% more than baseline
LazyText: OK (0.82s)
20.6 ns ± 738 ps, 47% more than baseline
init
Text: OK (0.89s)
12.3 ns ± 1.0 ns, 44% more than baseline
LazyText: OK (1.45s)
4.24 μs ± 154 ns, 42% more than baseline
intercalate
Text: OK (0.33s)
7.46 ms ± 378 μs, 39% more than baseline
LazyText: OK (0.47s)
2.61 ms ± 205 μs, 38% more than baseline
intersperse
Text: OK (0.82s)
10.6 ms ± 590 μs, 14% more than baseline
LazyText: OK (0.62s)
195 ms ± 12 ms, 41% more than baseline
isInfixOf
Text: OK (0.53s)
71.4 μs ± 6.3 μs, 17% more than baseline
LazyText: OK (0.70s)
117 μs ± 8.0 μs, 24% more than baseline
last
Text: OK (0.62s)
9.18 ns ± 798 ps, 29% more than baseline
LazyText: OK (0.55s)
364 ns ± 30 ns, 13% more than baseline
map
Text: OK (0.33s)
16.5 ms ± 1.3 ms, same as baseline
LazyText: OK (0.17s)
15.5 ms ± 1.5 ms, 12% more than baseline
mapAccumL
Text: OK (0.56s)
173 ms ± 3.8 ms, 35% more than baseline
LazyText: OK (0.33s)
94.3 ms ± 5.0 ms, 22% more than baseline
mapAccumR
Text: OK (0.57s)
177 ms ± 15 ms, 36% more than baseline
LazyText: OK (0.34s)
98.2 ms ± 4.2 ms, 23% more than baseline
map.map
Text: OK (0.19s)
18.4 ms ± 1.5 ms, same as baseline
LazyText: OK (0.34s)
16.8 ms ± 825 μs, 7% more than baseline
replicate char
Text: OK (0.75s)
1.01 ms ± 50 μs, 38% more than baseline
LazyText: OK (0.61s)
43.9 μs ± 1.8 μs, 167% more than baseline
replicate string
Text: OK (1.27s)
958 μs ± 38 μs, 39% more than baseline
LazyText: OK (0.53s)
34.1 μs ± 1.8 μs, 104% more than baseline
reverse
Text: OK (1.27s)
2.05 ms ± 66 μs, 31% more than baseline
LazyText: OK (0.41s)
2.09 ms ± 146 μs, 37% more than baseline
take
Text: OK (0.93s)
167 μs ± 4.4 μs, 14% more than baseline
LazyText: OK (0.39s)
183 μs ± 12 μs, 20% more than baseline
tail
Text: OK (1.00s)
14.0 ns ± 644 ps, 41% more than baseline
LazyText: OK (0.51s)
258 ns ± 22 ns, same as baseline
toLower
Text: OK (0.25s)
27.5 ms ± 1.5 ms, 194% more than baseline
LazyText: OK (0.39s)
9.44 ms ± 459 μs, 9% more than baseline
toUpper
Text: OK (0.74s)
44.5 ms ± 841 μs, 191% more than baseline
LazyText: OK (0.17s)
15.3 ms ± 1.5 ms, 11% more than baseline
uncons
Text: OK (0.62s)
20.8 ns ± 1.3 ns, 53% more than baseline
LazyText: OK (0.50s)
259 ns ± 23 ns, same as baseline
words
Text: OK (2.20s)
69.7 ms ± 1.2 ms, 17% more than baseline
LazyText: OK (0.55s)
150 ms ± 6.9 ms, 8% more than baseline
zipWith
Text: OK (0.36s)
91.3 ms ± 4.2 ms, 27% more than baseline
LazyText: OK (0.65s)
204 ms ± 4.3 ms, 45% more than baseline
length
cons
Text: OK (0.46s)
545 μs ± 51 μs, 21% more than baseline
LazyText: OK (0.19s)
534 μs ± 52 μs, 16% more than baseline
decode
Text: OK (1.64s)
1.41 ms ± 123 μs, 66% more than baseline
LazyText: OK (1.60s)
1.39 ms ± 55 μs, 43% more than baseline
drop
Text: OK (0.78s)
557 μs ± 53 μs, 21% more than baseline
LazyText: OK (0.29s)
513 μs ± 51 μs, same as baseline
filter
Text: OK (0.23s)
12.0 ms ± 939 μs, 90% more than baseline
LazyText: OK (0.33s)
7.37 ms ± 404 μs, 14% more than baseline
filter.filter
Text: OK (0.27s)
12.2 ms ± 977 μs, 94% more than baseline
LazyText: OK (0.33s)
7.34 ms ± 390 μs, 13% more than baseline
init
Text: OK (18.16s)
541 μs ± 7.2 μs, 21% more than baseline
LazyText: OK (0.72s)
521 μs ± 41 μs, 10% more than baseline
intercalate
Text: OK (0.26s)
993 μs ± 94 μs, 12% more than baseline
LazyText: OK (0.28s)
1.11 ms ± 95 μs, 16% more than baseline
intersperse
Text: OK (0.29s)
510 μs ± 48 μs, 13% more than baseline
LazyText: OK (0.19s)
545 μs ± 43 μs, 18% more than baseline
map
Text: OK (0.36s)
519 μs ± 33 μs, 16% more than baseline
LazyText: OK (0.30s)
613 μs ± 58 μs, 30% more than baseline
map.map
Text: OK (0.61s)
548 μs ± 28 μs, 24% more than baseline
LazyText: OK (1.29s)
523 μs ± 8.9 μs, 10% more than baseline
replicate char
Text: OK (0.60s)
22.2 ns ± 2.0 ns, 18% more than baseline
LazyText: OK (0.57s)
19.3 ns ± 1.9 ns, 23% more than baseline
replicate string
Text: OK (0.61s)
24.4 ns ± 1.6 ns, 16% more than baseline
LazyText: OK (0.75s)
19.9 ns ± 914 ps, 20% more than baseline
take
Text: OK (0.33s)
319 μs ± 22 μs, 7% more than baseline
LazyText: OK (0.33s)
339 μs ± 33 μs, 11% more than baseline
tail
Text: OK (0.29s)
543 μs ± 49 μs, 14% more than baseline
LazyText: OK (0.38s)
504 μs ± 36 μs, 7% more than baseline
toLower
Text: OK (0.24s)
11.3 ms ± 707 μs, 16% more than baseline
LazyText: OK (0.22s)
9.76 ms ± 685 μs, same as baseline
toUpper
Text: OK (0.33s)
16.8 ms ± 831 μs, same as baseline
LazyText: OK (0.31s)
15.6 ms ± 715 μs, 8% more than baseline
words
Text: OK (0.33s)
17.2 ms ± 766 μs, 13% more than baseline
LazyText: OK (0.15s)
44.5 ms ± 4.1 ms, 34% more than baseline
zipWith
Text: OK (0.42s)
498 μs ± 27 μs, 11% more than baseline
LazyText: OK (0.43s)
527 μs ± 41 μs, 18% more than baseline
Builder
mappend char: OK (0.49s)
14.3 μs ± 720 ns, 15% more than baseline
mappend 8 char: OK (0.64s)
56.2 ns ± 3.5 ns, 21% more than baseline
mappend text: OK (0.35s)
66.0 μs ± 6.2 μs, 15% more than baseline
russian
append
Text: OK (0.39s)
2.73 μs ± 193 ns, same as baseline
LazyText: OK (0.66s)
21.9 ns ± 1.1 ns, 21% more than baseline
concat
Text: OK (0.38s)
2.93 μs ± 259 ns, 21% more than baseline
LazyText: OK (0.56s)
616 ns ± 52 ns, 12% more than baseline
cons
Text: OK (0.25s)
62.4 μs ± 5.9 μs, 18% more than baseline
LazyText: OK (0.42s)
18.1 ns ± 1.6 ns, 17% more than baseline
decode
Text: OK (0.44s)
1.87 μs ± 102 ns, 9% more than baseline
LazyText: OK (0.33s)
2.00 μs ± 182 ns, same as baseline
decode'
Text: OK (0.45s)
1.89 μs ± 86 ns, 10% more than baseline
LazyText: OK (0.76s)
2.11 μs ± 44 ns, 12% more than baseline
drop
Text: OK (0.35s)
496 ns ± 49 ns, same as baseline
LazyText: OK (0.34s)
500 ns ± 46 ns, same as baseline
encode
Text: OK (0.51s)
1.16 μs ± 43 ns, 24% more than baseline
LazyText: OK (0.35s)
1.18 μs ± 96 ns, 17% more than baseline
filter
Text: OK (0.36s)
25.0 μs ± 1.5 μs, 8% more than baseline
LazyText: OK (0.38s)
27.0 μs ± 1.8 μs, 21% more than baseline
filter.filter
Text: OK (0.60s)
25.0 μs ± 1.2 μs, 6% more than baseline
LazyText: OK (0.41s)
27.1 μs ± 2.1 μs, 19% more than baseline
foldl'
Text: OK (3.23s)
46.3 μs ± 2.9 μs, 48% more than baseline
LazyText: OK (0.97s)
104 μs ± 5.6 μs, 76% more than baseline
foldr
Text: OK (3.29s)
90.4 μs ± 8.6 μs, 31% more than baseline
LazyText: OK (0.42s)
138 μs ± 6.1 μs, 26% more than baseline
head
Text: OK (0.67s)
11.0 ns ± 1.0 ns, 44% more than baseline
LazyText: OK (3.24s)
20.9 ns ± 1.8 ns, 54% more than baseline
init
Text: OK (0.50s)
12.1 ns ± 762 ps, 48% more than baseline
LazyText: OK (0.84s)
15.6 ns ± 376 ps, 26% more than baseline
intercalate
Text: OK (0.47s)
8.48 μs ± 442 ns, 40% more than baseline
LazyText: OK (1.09s)
3.34 μs ± 94 ns, 47% more than baseline
intersperse
Text: OK (0.38s)
26.0 μs ± 2.0 μs, 15% more than baseline
LazyText: OK (0.42s)
288 μs ± 13 μs, 37% more than baseline
isInfixOf
Text: OK (0.66s)
3.38 μs ± 264 ns, 17% more than baseline
LazyText: OK (0.38s)
5.78 μs ± 406 ns, same as baseline
last
Text: OK (37.77s)
8.46 ns ± 300 ps, 37% more than baseline
LazyText: OK (0.69s)
9.88 ns ± 772 ps, 25% more than baseline
map
Text: OK (0.30s)
39.9 μs ± 2.9 μs, 10% more than baseline
LazyText: OK (0.30s)
40.4 μs ± 3.9 μs, same as baseline
mapAccumL
Text: OK (0.40s)
60.6 μs ± 3.6 μs, 16% more than baseline
LazyText: OK (0.37s)
56.5 μs ± 3.1 μs, same as baseline
mapAccumR
Text: OK (0.69s)
61.6 μs ± 2.7 μs, 21% more than baseline
LazyText: OK (0.42s)
59.7 μs ± 5.0 μs, 14% more than baseline
map.map
Text: OK (0.32s)
43.2 μs ± 2.8 μs, same as baseline
LazyText: OK (0.35s)
44.6 μs ± 3.2 μs, 9% more than baseline
replicate char
Text: OK (0.75s)
3.91 μs ± 248 ns, 73% more than baseline
LazyText: OK (0.45s)
3.80 μs ± 371 ns, 49% more than baseline
replicate string
Text: OK (0.67s)
3.43 μs ± 203 ns, 42% more than baseline
LazyText: OK (0.73s)
3.97 μs ± 127 ns, 60% more than baseline
reverse
Text: OK (0.43s)
6.77 μs ± 369 ns, 35% less than baseline
LazyText: OK (0.42s)
6.87 μs ± 622 ns, 35% less than baseline
take
Text: OK (0.51s)
510 ns ± 31 ns, 8% more than baseline
LazyText: OK (0.37s)
514 ns ± 43 ns, same as baseline
tail
Text: OK (1.23s)
13.6 ns ± 312 ps, 49% more than baseline
LazyText: OK (0.53s)
13.8 ns ± 1.3 ns, 33% more than baseline
toLower
Text: OK (0.37s)
51.6 μs ± 4.0 μs, 26% more than baseline
LazyText: OK (0.34s)
43.4 μs ± 3.1 μs, 9% more than baseline
toUpper
Text: OK (0.39s)
120 μs ± 7.2 μs, 26% more than baseline
LazyText: OK (0.61s)
108 μs ± 3.3 μs, 19% more than baseline
uncons
Text: OK (0.63s)
20.6 ns ± 898 ps, 62% more than baseline
LazyText: OK (0.69s)
23.4 ns ± 916 ps, 41% more than baseline
words
Text: OK (0.60s)
54.1 μs ± 3.2 μs, 44% more than baseline
LazyText: OK (0.32s)
93.5 μs ± 7.4 μs, 13% more than baseline
zipWith
Text: OK (0.48s)
162 μs ± 14 μs, 22% more than baseline
LazyText: OK (0.29s)
344 μs ± 31 μs, 57% more than baseline
length
cons
Text: OK (0.42s)
1.45 μs ± 118 ns, same as baseline
LazyText: OK (0.41s)
1.45 μs ± 118 ns, same as baseline
decode
Text: OK (0.44s)
3.44 μs ± 335 ns, 12% more than baseline
LazyText: OK (0.44s)
3.59 μs ± 273 ns, 18% more than baseline
drop
Text: OK (0.41s)
1.53 μs ± 100 ns, 9% more than baseline
LazyText: OK (0.42s)
1.55 μs ± 87 ns, 9% more than baseline
filter
Text: OK (0.34s)
20.7 μs ± 1.3 μs, 10% more than baseline
LazyText: OK (0.27s)
26.9 μs ± 2.7 μs, 19% more than baseline
filter.filter
Text: OK (0.36s)
22.0 μs ± 1.5 μs, 17% more than baseline
LazyText: OK (0.39s)
27.1 μs ± 2.1 μs, 18% more than baseline
init
Text: OK (0.41s)
1.44 μs ± 106 ns, same as baseline
LazyText: OK (0.41s)
1.47 μs ± 109 ns, same as baseline
intercalate
Text: OK (0.35s)
2.18 μs ± 197 ns, same as baseline
LazyText: OK (0.36s)
2.31 μs ± 203 ns, 10% more than baseline
intersperse
Text: OK (0.42s)
1.47 μs ± 86 ns, same as baseline
LazyText: OK (0.41s)
1.45 μs ± 99 ns, 7% more than baseline
map
Text: OK (0.42s)
1.48 μs ± 131 ns, 12% more than baseline
LazyText: OK (0.42s)
1.45 μs ± 108 ns, 8% more than baseline
map.map
Text: OK (0.41s)
1.42 μs ± 118 ns, 10% more than baseline
LazyText: OK (0.42s)
1.45 μs ± 91 ns, 9% more than baseline
replicate char
Text: OK (0.70s)
23.4 ns ± 2.3 ns, 23% more than baseline
LazyText: OK (0.47s)
20.2 ns ± 2.0 ns, 32% more than baseline
replicate string
Text: OK (0.73s)
25.0 ns ± 2.1 ns, 21% more than baseline
LazyText: OK (0.47s)
20.8 ns ± 1.5 ns, 25% more than baseline
take
Text: OK (0.51s)
1.00 μs ± 46 ns, same as baseline
LazyText: OK (0.37s)
1.01 μs ± 94 ns, same as baseline
tail
Text: OK (0.43s)
1.54 μs ± 124 ns, 9% more than baseline
LazyText: OK (0.43s)
1.52 μs ± 101 ns, same as baseline
toLower
Text: OK (0.35s)
45.9 μs ± 4.1 μs, 11% more than baseline
LazyText: OK (0.35s)
46.1 μs ± 3.8 μs, same as baseline
toUpper
Text: OK (0.36s)
103 μs ± 9.1 μs, same as baseline
LazyText: OK (0.37s)
106 μs ± 7.1 μs, 13% more than baseline
words
Text: OK (0.39s)
54.0 μs ± 4.1 μs, 47% more than baseline
LazyText: OK (0.82s)
79.5 μs ± 2.5 μs, 17% more than baseline
zipWith
Text: OK (0.43s)
1.46 μs ± 98 ns, same as baseline
LazyText: OK (0.42s)
1.45 μs ± 128 ns, 11% more than baseline
Builder
mappend char: OK (0.44s)
15.0 μs ± 930 ns, 21% more than baseline
mappend 8 char: OK (0.56s)
61.5 ns ± 2.8 ns, 35% more than baseline
mappend text: OK (0.30s)
69.8 μs ± 6.9 μs, 22% more than baseline
japanese
append
Text: OK (0.68s)
3.44 μs ± 264 ns, 29% more than baseline
LazyText: OK (0.56s)
25.7 ns ± 1.3 ns, 47% more than baseline
concat
Text: OK (0.33s)
7.86 μs ± 768 ns, 33% more than baseline
LazyText: OK (0.41s)
2.86 μs ± 184 ns, 52% more than baseline
cons
Text: OK (0.60s)
47.8 μs ± 2.9 μs, 33% more than baseline
LazyText: OK (0.50s)
21.4 ns ± 1.5 ns, 36% more than baseline
decode
Text: OK (0.86s)
2.26 μs ± 67 ns, 24% more than baseline
LazyText: OK (0.38s)
2.33 μs ± 174 ns, 21% more than baseline
decode'
Text: OK (0.86s)
2.37 μs ± 48 ns, 27% more than baseline
LazyText: OK (0.39s)
2.51 μs ± 246 ns, 28% more than baseline
drop
Text: OK (0.56s)
544 ns ± 26 ns, same as baseline
LazyText: OK (0.55s)
544 ns ± 26 ns, 11% more than baseline
encode
Text: OK (0.45s)
1.55 μs ± 144 ns, 47% more than baseline
LazyText: OK (0.41s)
1.50 μs ± 91 ns, 38% more than baseline
filter
Text: OK (0.31s)
14.9 μs ± 1.4 μs, 10% more than baseline
LazyText: OK (0.45s)
14.8 μs ± 827 ns, 12% more than baseline
filter.filter
Text: OK (0.31s)
14.9 μs ± 1.4 μs, 13% more than baseline
LazyText: OK (0.45s)
14.9 μs ± 705 ns, 11% more than baseline
foldl'
Text: OK (1.16s)
29.3 μs ± 1.4 μs, 60% more than baseline
LazyText: OK (0.68s)
60.9 μs ± 2.2 μs, 63% more than baseline
foldr
Text: OK (0.44s)
64.9 μs ± 6.4 μs, 43% more than baseline
LazyText: OK (1.15s)
120 μs ± 2.4 μs, 41% more than baseline
head
Text: OK (0.53s)
10.6 ns ± 742 ps, 19% more than baseline
LazyText: OK (0.67s)
19.9 ns ± 862 ps, 40% more than baseline
init
Text: OK (1.15s)
11.8 ns ± 1.1 ns, 42% more than baseline
LazyText: OK (0.89s)
16.2 ns ± 906 ps, 31% more than baseline
intercalate
Text: OK (0.57s)
22.6 μs ± 1.1 μs, 32% more than baseline
LazyText: OK (0.86s)
9.81 μs ± 601 ns, 54% more than baseline
intersperse
Text: OK (0.46s)
16.2 μs ± 1.1 μs, 14% more than baseline
LazyText: OK (0.59s)
211 μs ± 6.6 μs, 48% more than baseline
isInfixOf
Text: OK (0.49s)
4.01 μs ± 248 ns, 25% more than baseline
LazyText: OK (0.44s)
6.55 μs ± 537 ns, same as baseline
last
Text: OK (0.65s)
8.87 ns ± 416 ps, 37% more than baseline
LazyText: OK (0.72s)
10.9 ns ± 602 ps, 37% more than baseline
map
Text: OK (0.42s)
28.2 μs ± 1.4 μs, 11% more than baseline
LazyText: OK (0.68s)
28.8 μs ± 1.2 μs, 15% more than baseline
mapAccumL
Text: OK (0.45s)
31.4 μs ± 2.6 μs, 13% more than baseline
LazyText: OK (0.32s)
32.4 μs ± 2.9 μs, 16% more than baseline
mapAccumR
Text: OK (0.50s)
36.2 μs ± 1.9 μs, 16% more than baseline
LazyText: OK (0.49s)
35.9 μs ± 2.5 μs, 13% more than baseline
map.map
Text: OK (0.31s)
30.0 μs ± 2.7 μs, same as baseline
LazyText: OK (0.47s)
32.0 μs ± 2.3 μs, 17% more than baseline
replicate char
Text: OK (0.52s)
4.19 μs ± 246 ns, 69% more than baseline
LazyText: OK (0.39s)
5.09 μs ± 400 ns, 71% more than baseline
replicate string
Text: OK (0.81s)
4.21 μs ± 357 ns, 76% more than baseline
LazyText: OK (0.91s)
4.87 μs ± 215 ns, 57% more than baseline
reverse
Text: OK (0.67s)
6.31 μs ± 574 ns, 16% more than baseline
LazyText: OK (0.41s)
6.31 μs ± 437 ns, 16% more than baseline
take
Text: OK (0.43s)
545 ns ± 47 ns, 12% more than baseline
LazyText: OK (0.43s)
545 ns ± 47 ns, same as baseline
tail
Text: OK (0.49s)
15.0 ns ± 1.4 ns, 55% more than baseline
LazyText: OK (0.63s)
15.4 ns ± 1.3 ns, 39% more than baseline
toLower
Text: OK (0.33s)
31.7 μs ± 2.9 μs, 13% more than baseline
LazyText: OK (0.74s)
31.5 μs ± 1.4 μs, 13% more than baseline
toUpper
Text: OK (0.33s)
31.5 μs ± 2.9 μs, 13% more than baseline
LazyText: OK (0.46s)
30.6 μs ± 1.5 μs, 9% more than baseline
uncons
Text: OK (0.56s)
23.7 ns ± 2.3 ns, 74% more than baseline
LazyText: OK (0.59s)
27.8 ns ± 2.2 ns, 64% more than baseline
words
Text: OK (0.54s)
85.6 μs ± 3.2 μs, 65% more than baseline
LazyText: OK (0.37s)
42.6 μs ± 3.5 μs, same as baseline
zipWith
Text: OK (0.42s)
121 μs ± 9.1 μs, 41% more than baseline
LazyText: OK (0.43s)
253 μs ± 16 μs, 65% more than baseline
length
cons
Text: OK (0.49s)
1.57 μs ± 101 ns, 8% more than baseline
LazyText: OK (0.48s)
1.56 μs ± 122 ns, 9% more than baseline
decode
Text: OK (0.52s)
3.97 μs ± 172 ns, 20% more than baseline
LazyText: OK (0.37s)
4.19 μs ± 395 ns, 21% more than baseline
drop
Text: OK (0.50s)
1.65 μs ± 104 ns, 9% more than baseline
LazyText: OK (0.49s)
1.65 μs ± 99 ns, 8% more than baseline
filter
Text: OK (0.43s)
11.9 μs ± 709 ns, 14% more than baseline
LazyText: OK (0.47s)
14.8 μs ± 775 ns, 13% more than baseline
filter.filter
Text: OK (0.42s)
11.7 μs ± 889 ns, 12% more than baseline
LazyText: OK (0.48s)
14.8 μs ± 830 ns, 12% more than baseline
init
Text: OK (0.48s)
1.56 μs ± 109 ns, 8% more than baseline
LazyText: OK (0.48s)
1.58 μs ± 114 ns, 8% more than baseline
intercalate
Text: OK (0.47s)
3.20 μs ± 254 ns, same as baseline
LazyText: OK (0.49s)
3.33 μs ± 229 ns, 7% more than baseline
intersperse
Text: OK (0.49s)
1.56 μs ± 129 ns, same as baseline
LazyText: OK (0.48s)
1.56 μs ± 97 ns, same as baseline
map
Text: OK (0.48s)
1.55 μs ± 83 ns, 7% more than baseline
LazyText: OK (0.49s)
1.56 μs ± 106 ns, 7% more than baseline
map.map
Text: OK (0.48s)
1.56 μs ± 96 ns, 9% more than baseline
LazyText: OK (0.49s)
1.58 μs ± 94 ns, same as baseline
replicate char
Text: OK (0.58s)
24.3 ns ± 1.4 ns, 23% more than baseline
LazyText: OK (0.56s)
21.6 ns ± 1.3 ns, 42% more than baseline
replicate string
Text: OK (0.59s)
25.8 ns ± 2.0 ns, 23% more than baseline
LazyText: OK (0.57s)
22.5 ns ± 1.8 ns, 33% more than baseline
take
Text: OK (0.43s)
1.06 μs ± 106 ns, same as baseline
LazyText: OK (0.43s)
1.07 μs ± 87 ns, same as baseline
tail
Text: OK (0.51s)
1.61 μs ± 140 ns, same as baseline
LazyText: OK (0.51s)
1.64 μs ± 108 ns, 9% more than baseline
toLower
Text: OK (0.33s)
31.9 μs ± 2.7 μs, same as baseline
LazyText: OK (0.34s)
32.1 μs ± 3.0 μs, same as baseline
toUpper
Text: OK (0.34s)
31.6 μs ± 2.7 μs, same as baseline
LazyText: OK (0.34s)
31.9 μs ± 2.7 μs, same as baseline
words
Text: OK (0.37s)
85.8 μs ± 5.5 μs, 59% more than baseline
LazyText: OK (0.37s)
39.5 μs ± 2.8 μs, same as baseline
zipWith
Text: OK (0.49s)
1.57 μs ± 139 ns, 10% more than baseline
LazyText: OK (0.50s)
1.58 μs ± 111 ns, 10% more than baseline
Builder
mappend char: OK (0.50s)
15.6 μs ± 753 ns, 22% more than baseline
mappend 8 char: OK (0.69s)
74.7 ns ± 6.5 ns, 58% more than baseline
mappend text: OK (0.53s)
73.4 μs ± 5.0 μs, 27% more than baseline
ReadNumbers
DecimalText: OK (0.71s)
495 μs ± 37 μs, 39% more than baseline
HexadecimalText: OK (0.43s)
1.06 ms ± 56 μs, 30% more than baseline
DoubleText: OK (0.27s)
2.60 ms ± 219 μs, 34% more than baseline
RationalText: OK (0.39s)
4.43 ms ± 340 μs, 26% more than baseline
DecimalLazyText: OK (17.40s)
2.01 ms ± 158 μs, 61% more than baseline
HexadecimalLazyText: OK (0.52s)
3.23 ms ± 179 μs, 29% more than baseline
DoubleLazyText: OK (0.28s)
6.17 ms ± 457 μs, 52% more than baseline
RationalLazyText: OK (0.35s)
8.13 ms ± 656 μs, 40% more than baseline
Replace
Text: OK (0.91s)
2.74 ms ± 87 μs, 32% more than baseline
LazyText: OK (0.35s)
3.62 ms ± 336 μs, 25% more than baseline
FileIndices
Text: OK (0.45s)
1.10 ms ± 103 μs, 52% more than baseline
LazyText: OK (0.27s)
2.52 ms ± 245 μs, 25% more than baseline
Stream
stream
Text: OK (0.30s)
35.4 ms ± 2.2 ms, 32% more than baseline
LazyText: OK (0.21s)
54.2 ms ± 5.0 ms, 66% more than baseline
streamUtf8
Text: OK (30.34s)
117 ms ± 303 μs, 71% more than baseline
LazyText: OK (0.51s)
155 ms ± 8.4 ms, 49% more than baseline
streamUtf16LE
Text: OK (1.51s)
45.7 ms ± 2.1 ms, 66% more than baseline
LazyText: OK (0.29s)
79.2 ms ± 6.8 ms, 54% more than baseline
streamUtf16BE
Text: OK (0.18s)
43.9 ms ± 3.1 ms, 51% more than baseline
LazyText: OK (0.28s)
81.3 ms ± 6.9 ms, 59% more than baseline
streamUtf32LE
Text: OK (0.64s)
36.5 ms ± 3.4 ms, 52% more than baseline
LazyText: OK (0.18s)
46.0 ms ± 3.0 ms, 52% more than baseline
streamUtf32BE
Text: OK (0.32s)
37.1 ms ± 1.6 ms, 60% more than baseline
LazyText: OK (0.41s)
48.4 ms ± 2.1 ms, 58% more than baseline
restreamUtf16LE: OK (2.20s)
65.1 ms ± 966 μs, 54% more than baseline
restreamUtf16BE: OK (0.24s)
65.3 ms ± 3.1 ms, 45% more than baseline
restreamUtf32LE: OK (0.33s)
94.7 ms ± 9.4 ms, 47% more than baseline
restreamUtf32BE: OK (0.73s)
92.8 ms ± 3.8 ms, 46% more than baseline
WordFrequencies
Text: OK (1.54s)
205 ms ± 16 ms, 34% more than baseline
Programs
BigTable: OK (0.57s)
171 ms ± 3.3 ms, 27% more than baseline
Cut
Text: OK (0.14s)
32.6 ms ± 3.2 ms, 21% more than baseline
LazyText: OK (0.19s)
48.4 ms ± 3.6 ms, 23% more than baseline
TextByteString: OK (0.48s)
11.3 ms ± 865 μs, 32% more than baseline
LazyTextByteString: OK (0.19s)
19.0 ms ± 1.4 ms, 29% more than baseline
Fold: OK (0.99s)
132 ms ± 4.1 ms, 36% more than baseline
Sort
Text: OK (1.39s)
88.0 ms ± 4.7 ms, 27% more than baseline
LazyText: OK (0.44s)
132 ms ± 8.1 ms, 30% more than baseline
TextByteString: OK (1.82s)
56.5 ms ± 2.6 ms, 34% more than baseline
LazyTextByteString: OK (0.50s)
64.2 ms ± 5.8 ms, 29% more than baseline
TextBuilder: OK (0.94s)
57.3 ms ± 5.0 ms, 36% more than baseline
StripTags
Text: OK (2.16s)
696 ms ± 46 ms, 14% more than baseline
TextByteString: OK (1.89s)
255 ms ± 9.1 ms, 16% more than baseline
Throughput
Text: OK (0.17s)
41.5 ms ± 3.6 ms, 18% more than baseline
LazyText: OK (0.70s)
40.4 ms ± 695 μs, 20% more than baseline
TextByteString: OK (0.76s)
4.39 ms ± 133 μs, 74% more than baseline
LazyTextByteString: OK (0.38s)
3.78 ms ± 272 μs, 37% more than baseline
```
The largest outliers are the following benchmarks, where the number is mean relative to 9.4.4.
```
All.Pure.ascii-small.toLower.Text,2.596621780908246
All.Pure.ascii-small.toUpper.Text,2.358755356262447
All.Pure.ascii.replicate char.LazyText,2.499722873092423
All.Pure.ascii.replicate string.LazyText,2.2572410054338343
All.Pure.ascii.toLower.Text,3.1815293595268455
All.Pure.ascii.toUpper.Text,2.82356005206939
All.Pure.english.replicate char.LazyText,2.6739704748511217
All.Pure.english.replicate string.LazyText,2.0432417641411265
All.Pure.english.toLower.Text,2.9464208480716763
All.Pure.english.toUpper.Text,2.917234634014721
```9.6.1Matthew PickeringMatthew Pickering