Skip to content

Change utf8LengthByLeader to a branching impl #635

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

meooow25
Copy link
Contributor

The simple branching implementation is more efficient in the majority of use cases where the result is branched on anyway. In other cases, branch prediction should do a decent job on typical text.

Closes #630.

The simple branching implementation is more efficient in the majority of
use cases where the result is branched on anyway. In other cases, branch
prediction should do a decent job on typical text.
@meooow25
Copy link
Contributor Author

All the benchmarks that change more than 5% with GHC 9.12.2 on my machine:

Expand
Name                                                                                Time - - - - - - - -
                                                                                         A       B     %
Builder.Int.Decimal.Negative.11                                                      60 ns   57 ns   -5%
Builder.Int.Decimal.Positive.1                                                       45 ns   42 ns   -6%
Concat.append                                                                        55 ns   51 ns   -7%
Concat.write                                                                         55 ns   50 ns  -10%
DecodeUtf8.ascii.StrictInitLength                                                    12 ms   13 ms   +6%
DecodeUtf8.ascii.strict decodeASCII                                                 6.1 ms  6.4 ms   +5%
Equality.Text                                                                       3.6 ns  3.9 ns   +9%
FileIndices.Text                                                                    782 μs  857 μs   +9%
FileWrite hPutStr.lazy LF BlockBuffering Nothing.length 100                         1.5 μs  1.3 μs  -13%
FileWrite hPutStr.lazy LF BlockBuffering Nothing.length 10000                       149 μs  132 μs  -11%
FileWrite hPutStr.lazy LF BlockBuffering Nothing.length 100000                      1.5 ms  1.4 ms  -12%
FileWrite hPutStr.lazy LF BlockBuffering Nothing.length 3000                         42 μs   37 μs  -12%
FileWrite hPutStr.lazy many newlines CRLF BlockBuffering Nothing.length 100         1.8 μs  1.6 μs  -15%
FileWrite hPutStr.lazy many newlines CRLF BlockBuffering Nothing.length 10000       179 μs  160 μs  -10%
FileWrite hPutStr.lazy many newlines CRLF BlockBuffering Nothing.length 100000      1.9 ms  1.7 ms  -10%
FileWrite hPutStr.lazy many newlines CRLF BlockBuffering Nothing.length 3000         53 μs   45 μs  -14%
FileWrite hPutStr.lazy many newlines CRLF LineBuffering.length 0                    189 ns  209 ns  +10%
FileWrite hPutStr.lazy many newlines CRLF LineBuffering.length 1                    205 ns  219 ns   +6%
FileWrite hPutStr.lazy many newlines LF LineBuffering.length 0                      186 ns  208 ns  +11%
FileWrite hPutStr.lazy many newlines LF LineBuffering.length 1                      205 ns  220 ns   +7%
FileWrite hPutStr.strict LF BlockBuffering Nothing.length 0                         242 ns  255 ns   +5%
FileWrite hPutStr.strict many newlines CRLF BlockBuffering Nothing.length 100       1.5 μs  1.3 μs  -14%
FileWrite hPutStr.strict many newlines CRLF BlockBuffering Nothing.length 10000     151 μs  136 μs  -10%
FileWrite hPutStr.strict many newlines CRLF BlockBuffering Nothing.length 100000    1.6 ms  1.4 ms   -9%
FileWrite hPutStr.strict many newlines CRLF BlockBuffering Nothing.length 3000       43 μs   37 μs  -13%
FileWrite hPutStr.strict many newlines LF LineBuffering.length 1                    512 ns  539 ns   +5%
Micro.lazy-inits--last.baseline                                                      25 ms   27 ms  +10%
Micro.lazy-inits--last.x2                                                            51 ms   55 ms   +8%
Micro.lazy-inits--map-take1.baseline                                                 36 ms   39 ms   +7%
Micro.lazy-inits--map-take1.x2                                                       74 ms   78 ms   +5%
Multilang.find_index                                                                666 ns  545 ns  -18%
Programs.BigTable                                                                   238 ms  217 ms   -8%
Programs.Cut.LazyText                                                                29 ms   27 ms   -6%
Programs.Cut.Text                                                                    22 ms   21 ms   -5%
Programs.Fold                                                                       109 ms  101 ms   -7%
Programs.Sort.LazyText                                                               95 ms   87 ms   -8%
Programs.StripTags.Text                                                             459 ms  381 ms  -16%
Programs.StripTags.TextByteString                                                   265 ms  193 ms  -27%
Programs.Throughput.LazyText                                                         61 ms   53 ms  -12%
Pure.ascii-small.append.LazyText                                                     52 ns   48 ns   -6%
Pure.ascii-small.cons.Text                                                          283 μs  140 μs  -50%
Pure.ascii-small.filter.LazyText                                                    171 μs   53 μs  -68%
Pure.ascii-small.filter.Text                                                        170 μs   54 μs  -68%
Pure.ascii-small.filter.filter.LazyText                                             170 μs   53 μs  -68%
Pure.ascii-small.filter.filter.Text                                                 170 μs   54 μs  -68%
Pure.ascii-small.foldl'.LazyText                                                    532 μs  461 μs  -13%
Pure.ascii-small.foldl'.Text                                                        329 μs  263 μs  -19%
Pure.ascii-small.foldr.LazyText                                                     923 μs  851 μs   -7%
Pure.ascii-small.foldr.Text                                                         709 μs  606 μs  -14%
Pure.ascii-small.intersperse.Text                                                   502 μs  414 μs  -17%
Pure.ascii-small.length . drop 1 . unpack.LazyText                                  924 μs  836 μs   -9%
Pure.ascii-small.length . drop 1 . unpack.Text                                      760 μs  663 μs  -12%
Pure.ascii-small.length . unpack.LazyText                                           178 μs   54 μs  -69%
Pure.ascii-small.length . unpack.Text                                               143 μs   34 μs  -76%
Pure.ascii-small.length.filter.LazyText                                             172 μs   53 μs  -69%
Pure.ascii-small.length.filter.Text                                                 162 μs   37 μs  -77%
Pure.ascii-small.length.filter.filter.LazyText                                      173 μs   54 μs  -68%
Pure.ascii-small.length.filter.filter.Text                                          160 μs   39 μs  -75%
Pure.ascii-small.length.toLower.LazyText                                            202 μs  103 μs  -49%
Pure.ascii-small.length.toLower.Text                                                200 μs  102 μs  -48%
Pure.ascii-small.length.toTitle.LazyText                                            302 μs  216 μs  -28%
Pure.ascii-small.length.toTitle.Text                                                301 μs  214 μs  -28%
Pure.ascii-small.length.toUpper.LazyText                                            230 μs  126 μs  -45%
Pure.ascii-small.length.toUpper.Text                                                227 μs  129 μs  -43%
Pure.ascii-small.length.words.LazyText                                              767 μs  639 μs  -16%
Pure.ascii-small.map.LazyText                                                       324 μs  184 μs  -43%
Pure.ascii-small.map.Text                                                           317 μs  185 μs  -41%
Pure.ascii-small.map.map.LazyText                                                   346 μs  220 μs  -36%
Pure.ascii-small.map.map.Text                                                       339 μs  218 μs  -35%
Pure.ascii-small.mapAccumL.LazyText                                                 735 μs  601 μs  -18%
Pure.ascii-small.mapAccumL.Text                                                     921 μs  780 μs  -15%
Pure.ascii-small.tail.LazyText                                                      9.0 ns  7.4 ns  -17%
Pure.ascii-small.tail.Text                                                          2.7 ns  2.0 ns  -23%
Pure.ascii-small.toLower.LazyText                                                   194 μs   97 μs  -50%
Pure.ascii-small.toLower.Text                                                       193 μs   94 μs  -50%
Pure.ascii-small.toTitle.LazyText                                                   295 μs  212 μs  -27%
Pure.ascii-small.toTitle.Text                                                       293 μs  214 μs  -27%
Pure.ascii-small.toUpper.LazyText                                                   222 μs  124 μs  -44%
Pure.ascii-small.toUpper.Text                                                       224 μs  123 μs  -45%
Pure.ascii-small.uncons.LazyText                                                    9.5 ns  7.9 ns  -17%
Pure.ascii-small.uncons.Text                                                        3.1 ns  2.1 ns  -32%
Pure.ascii-small.words.LazyText                                                     958 μs  860 μs  -10%
Pure.ascii-small.zipWith.Text                                                       1.2 ms  952 μs  -22%
Pure.ascii.append.LazyText                                                           43 μs   46 μs   +6%
Pure.ascii.cons.Text                                                                242 ms  119 ms  -50%
Pure.ascii.filter.LazyText                                                          144 ms   45 ms  -68%
Pure.ascii.filter.Text                                                              145 ms   45 ms  -68%
Pure.ascii.filter.filter.LazyText                                                   145 ms   45 ms  -68%
Pure.ascii.filter.filter.Text                                                       145 ms   45 ms  -68%
Pure.ascii.foldl'.LazyText                                                          450 ms  400 ms  -11%
Pure.ascii.foldl'.Text                                                              275 ms  224 ms  -18%
Pure.ascii.foldr.LazyText                                                           777 ms  709 ms   -8%
Pure.ascii.foldr.Text                                                               595 ms  509 ms  -14%
Pure.ascii.intercalate.Text                                                          47 ms   51 ms   +9%
Pure.ascii.intersperse.Text                                                         477 ms  378 ms  -20%
Pure.ascii.last.LazyText                                                             20 μs  8.6 μs  -56%
Pure.ascii.length . drop 1 . unpack.LazyText                                        778 ms  710 ms   -8%
Pure.ascii.length . drop 1 . unpack.Text                                            640 ms  574 ms  -10%
Pure.ascii.length . unpack.LazyText                                                 148 ms   48 ms  -67%
Pure.ascii.length . unpack.Text                                                     121 ms   29 ms  -76%
Pure.ascii.length.filter.LazyText                                                   147 ms   46 ms  -68%
Pure.ascii.length.filter.Text                                                       138 ms   31 ms  -77%
Pure.ascii.length.filter.filter.LazyText                                            147 ms   46 ms  -68%
Pure.ascii.length.filter.filter.Text                                                137 ms   30 ms  -77%
Pure.ascii.length.intercalate.Text                                                   14 ms   15 ms   +7%
Pure.ascii.length.toLower.LazyText                                                  172 ms   88 ms  -48%
Pure.ascii.length.toLower.Text                                                      174 ms   88 ms  -49%
Pure.ascii.length.toTitle.LazyText                                                  261 ms  187 ms  -28%
Pure.ascii.length.toTitle.Text                                                      264 ms  189 ms  -28%
Pure.ascii.length.toUpper.LazyText                                                  200 ms  111 ms  -44%
Pure.ascii.length.toUpper.Text                                                      203 ms  118 ms  -41%
Pure.ascii.length.words.LazyText                                                    651 ms  541 ms  -16%
Pure.ascii.map.LazyText                                                             273 ms  158 ms  -42%
Pure.ascii.map.Text                                                                 272 ms  157 ms  -42%
Pure.ascii.map.map.LazyText                                                         297 ms  188 ms  -36%
Pure.ascii.map.map.Text                                                             303 ms  174 ms  -42%
Pure.ascii.mapAccumL.LazyText                                                       896 ms  771 ms  -14%
Pure.ascii.mapAccumL.Text                                                           1.06 s  979 ms   -7%
Pure.ascii.replicate string.Text                                                    8.5 ms   10 ms  +18%
Pure.ascii.sconcat.LazyText                                                          12 ms   18 ms  +52%
Pure.ascii.tail.Text                                                                2.7 ns  2.0 ns  -26%
Pure.ascii.toLower.LazyText                                                         165 ms   81 ms  -50%
Pure.ascii.toLower.Text                                                             169 ms   84 ms  -50%
Pure.ascii.toTitle.LazyText                                                         254 ms  179 ms  -29%
Pure.ascii.toTitle.Text                                                             256 ms  193 ms  -24%
Pure.ascii.toUpper.LazyText                                                         193 ms  108 ms  -43%
Pure.ascii.toUpper.Text                                                             199 ms  123 ms  -38%
Pure.ascii.uncons.Text                                                              3.1 ns  2.1 ns  -32%
Pure.ascii.words.LazyText                                                           802 ms  720 ms  -10%
Pure.ascii.zipWith.Text                                                             1.03 s  808 ms  -21%
Pure.english.concat.LazyText                                                        401 μs  638 μs  +59%
Pure.english.cons.Text                                                               16 ms  8.0 ms  -50%
Pure.english.filter.LazyText                                                         10 ms  3.1 ms  -69%
Pure.english.filter.Text                                                             10 ms  3.1 ms  -69%
Pure.english.filter.filter.LazyText                                                  10 ms  3.1 ms  -69%
Pure.english.filter.filter.Text                                                      10 ms  3.1 ms  -68%
Pure.english.foldl'.LazyText                                                         31 ms   27 ms  -13%
Pure.english.foldl'.Text                                                             19 ms   15 ms  -19%
Pure.english.foldr.LazyText                                                          53 ms   48 ms   -9%
Pure.english.foldr.Text                                                              41 ms   34 ms  -15%
Pure.english.intercalate.LazyText                                                   2.8 ms  1.5 ms  -44%
Pure.english.intersperse.LazyText                                                   123 ms  116 ms   -5%
Pure.english.intersperse.Text                                                        30 ms   25 ms  -17%
Pure.english.last.LazyText                                                          447 ns  401 ns  -10%
Pure.english.length . drop 1 . unpack.LazyText                                       52 ms   47 ms   -9%
Pure.english.length . drop 1 . unpack.Text                                           43 ms   38 ms  -10%
Pure.english.length . unpack.LazyText                                                10 ms  3.1 ms  -70%
Pure.english.length . unpack.Text                                                   8.3 ms  1.9 ms  -77%
Pure.english.length.filter.LazyText                                                  10 ms  3.1 ms  -69%
Pure.english.length.filter.Text                                                     9.4 ms  2.0 ms  -78%
Pure.english.length.filter.filter.LazyText                                           10 ms  3.1 ms  -69%
Pure.english.length.filter.filter.Text                                              9.2 ms  2.0 ms  -78%
Pure.english.length.toLower.LazyText                                                 12 ms  5.9 ms  -48%
Pure.english.length.toLower.Text                                                     12 ms  5.9 ms  -49%
Pure.english.length.toTitle.LazyText                                                 18 ms   12 ms  -28%
Pure.english.length.toTitle.Text                                                     18 ms   13 ms  -28%
Pure.english.length.toUpper.LazyText                                                 14 ms  7.5 ms  -44%
Pure.english.length.toUpper.Text                                                     14 ms  7.8 ms  -41%
Pure.english.length.words.LazyText                                                   44 ms   37 ms  -16%
Pure.english.map.LazyText                                                            18 ms   11 ms  -41%
Pure.english.map.Text                                                                18 ms   11 ms  -41%
Pure.english.map.map.LazyText                                                        20 ms   12 ms  -40%
Pure.english.map.map.Text                                                            19 ms   12 ms  -40%
Pure.english.mapAccumL.LazyText                                                      59 ms   50 ms  -14%
Pure.english.mapAccumL.Text                                                          99 ms   92 ms   -7%
Pure.english.tail.LazyText                                                          601 ns  272 ns  -54%
Pure.english.tail.Text                                                              2.7 ns  2.0 ns  -25%
Pure.english.toLower.LazyText                                                        11 ms  5.5 ms  -50%
Pure.english.toLower.Text                                                            11 ms  5.4 ms  -51%
Pure.english.toTitle.LazyText                                                        17 ms   12 ms  -29%
Pure.english.toTitle.Text                                                            17 ms   12 ms  -29%
Pure.english.toUpper.LazyText                                                        13 ms  7.3 ms  -43%
Pure.english.toUpper.Text                                                            13 ms  7.4 ms  -44%
Pure.english.uncons.Text                                                            3.0 ns  2.0 ns  -32%
Pure.english.words.LazyText                                                          54 ms   48 ms  -11%
Pure.english.zipWith.LazyText                                                       199 ms  188 ms   -5%
Pure.english.zipWith.Text                                                            69 ms   54 ms  -21%
Pure.japanese.concat.Text                                                           3.4 μs  3.1 μs  -10%
Pure.japanese.cons.Text                                                              27 μs   19 μs  -27%
Pure.japanese.filter.LazyText                                                        18 μs   12 μs  -33%
Pure.japanese.filter.Text                                                            18 μs   12 μs  -33%
Pure.japanese.filter.filter.LazyText                                                 18 μs   12 μs  -32%
Pure.japanese.filter.filter.Text                                                     18 μs   12 μs  -32%
Pure.japanese.foldl'.LazyText                                                        35 μs   30 μs  -15%
Pure.japanese.foldl'.Text                                                            22 μs   18 μs  -18%
Pure.japanese.foldr.LazyText                                                         61 μs   56 μs   -8%
Pure.japanese.foldr.Text                                                             49 μs   43 μs  -11%
Pure.japanese.intersperse.LazyText                                                  146 μs  138 μs   -5%
Pure.japanese.intersperse.Text                                                       38 μs   32 μs  -16%
Pure.japanese.length . drop 1 . unpack.LazyText                                      61 μs   56 μs   -8%
Pure.japanese.length . drop 1 . unpack.Text                                          52 μs   47 μs  -10%
Pure.japanese.length . unpack.LazyText                                               13 μs  8.4 μs  -36%
Pure.japanese.length . unpack.Text                                                   10 μs  5.3 μs  -48%
Pure.japanese.length.filter.LazyText                                                 18 μs   12 μs  -32%
Pure.japanese.length.filter.Text                                                     14 μs   12 μs  -18%
Pure.japanese.length.filter.filter.LazyText                                          18 μs   12 μs  -32%
Pure.japanese.length.filter.filter.Text                                              14 μs   12 μs  -16%
Pure.japanese.length.toLower.LazyText                                                38 μs   31 μs  -18%
Pure.japanese.length.toLower.Text                                                    38 μs   31 μs  -18%
Pure.japanese.length.toTitle.LazyText                                                55 μs   47 μs  -14%
Pure.japanese.length.toTitle.Text                                                    55 μs   47 μs  -15%
Pure.japanese.length.toUpper.LazyText                                                38 μs   30 μs  -19%
Pure.japanese.length.toUpper.Text                                                    38 μs   31 μs  -19%
Pure.japanese.length.words.LazyText                                                  51 μs   47 μs   -7%
Pure.japanese.length.words.Text                                                      58 μs   49 μs  -14%
Pure.japanese.map.LazyText                                                           31 μs   23 μs  -26%
Pure.japanese.map.Text                                                               31 μs   23 μs  -24%
Pure.japanese.map.map.LazyText                                                       33 μs   26 μs  -22%
Pure.japanese.map.map.Text                                                           33 μs   26 μs  -22%
Pure.japanese.mapAccumL.LazyText                                                     34 μs   27 μs  -21%
Pure.japanese.mapAccumL.Text                                                         35 μs   27 μs  -21%
Pure.japanese.mapAccumR.LazyText                                                     38 μs   36 μs   -5%
Pure.japanese.reverse.LazyText                                                      5.8 μs  5.1 μs  -11%
Pure.japanese.reverse.Text                                                          5.9 μs  5.1 μs  -12%
Pure.japanese.tail.LazyText                                                         6.6 ns  5.8 ns  -12%
Pure.japanese.tail.Text                                                             2.7 ns  2.0 ns  -25%
Pure.japanese.toLower.LazyText                                                       36 μs   29 μs  -19%
Pure.japanese.toLower.Text                                                           36 μs   30 μs  -17%
Pure.japanese.toTitle.LazyText                                                       53 μs   46 μs  -13%
Pure.japanese.toTitle.Text                                                           53 μs   46 μs  -13%
Pure.japanese.toUpper.LazyText                                                       36 μs   29 μs  -18%
Pure.japanese.toUpper.Text                                                           36 μs   29 μs  -18%
Pure.japanese.uncons.LazyText                                                       7.2 ns  6.2 ns  -14%
Pure.japanese.uncons.Text                                                           2.9 ns  2.0 ns  -31%
Pure.japanese.words.LazyText                                                         56 μs   53 μs   -5%
Pure.japanese.words.Text                                                             77 μs   71 μs   -7%
Pure.japanese.zipWith.Text                                                           91 μs   84 μs   -7%
Pure.russian.cons.Text                                                               37 μs   25 μs  -33%
Pure.russian.filter.LazyText                                                         26 μs   13 μs  -49%
Pure.russian.filter.Text                                                             26 μs   14 μs  -47%
Pure.russian.filter.filter.LazyText                                                  27 μs   13 μs  -49%
Pure.russian.filter.filter.Text                                                      26 μs   14 μs  -46%
Pure.russian.foldl'.LazyText                                                         57 μs   46 μs  -18%
Pure.russian.foldl'.Text                                                             33 μs   27 μs  -16%
Pure.russian.foldr.LazyText                                                          94 μs   82 μs  -11%
Pure.russian.foldr.Text                                                              76 μs   63 μs  -16%
Pure.russian.intersperse.LazyText                                                   214 μs  200 μs   -6%
Pure.russian.intersperse.Text                                                        56 μs   45 μs  -19%
Pure.russian.length . drop 1 . unpack.LazyText                                       93 μs   82 μs  -11%
Pure.russian.length . drop 1 . unpack.Text                                           82 μs   68 μs  -16%
Pure.russian.length . unpack.LazyText                                                27 μs   14 μs  -48%
Pure.russian.length . unpack.Text                                                    18 μs  3.5 μs  -80%
Pure.russian.length.filter.LazyText                                                  27 μs   13 μs  -50%
Pure.russian.length.filter.Text                                                      23 μs   11 μs  -51%
Pure.russian.length.filter.filter.LazyText                                           27 μs   13 μs  -50%
Pure.russian.length.filter.filter.Text                                               24 μs   11 μs  -51%
Pure.russian.length.toLower.LazyText                                                 55 μs   44 μs  -20%
Pure.russian.length.toLower.Text                                                     55 μs   43 μs  -21%
Pure.russian.length.toTitle.LazyText                                                 76 μs   69 μs   -8%
Pure.russian.length.toTitle.Text                                                     76 μs   69 μs   -8%
Pure.russian.length.words.LazyText                                                   81 μs   68 μs  -16%
Pure.russian.map.LazyText                                                            45 μs   31 μs  -31%
Pure.russian.map.Text                                                                46 μs   32 μs  -30%
Pure.russian.map.map.LazyText                                                        48 μs   34 μs  -29%
Pure.russian.map.map.Text                                                            48 μs   34 μs  -29%
Pure.russian.mapAccumL.LazyText                                                      63 μs   48 μs  -24%
Pure.russian.mapAccumL.Text                                                          63 μs   47 μs  -24%
Pure.russian.mapAccumR.Text                                                          58 μs   63 μs  +10%
Pure.russian.reverse.LazyText                                                       3.9 μs  4.6 μs  +17%
Pure.russian.reverse.Text                                                           3.9 μs  4.7 μs  +19%
Pure.russian.tail.LazyText                                                          6.7 ns  5.6 ns  -15%
Pure.russian.tail.Text                                                              2.7 ns  2.0 ns  -26%
Pure.russian.toLower.LazyText                                                        54 μs   42 μs  -22%
Pure.russian.toLower.Text                                                            54 μs   42 μs  -22%
Pure.russian.toTitle.LazyText                                                        73 μs   67 μs   -8%
Pure.russian.toTitle.Text                                                            73 μs   67 μs   -7%
Pure.russian.uncons.LazyText                                                        7.3 ns  6.0 ns  -18%
Pure.russian.uncons.Text                                                            3.0 ns  2.0 ns  -33%
Pure.russian.words.LazyText                                                          98 μs   86 μs  -12%
Pure.russian.zipWith.Text                                                           130 μs  100 μs  -22%
Pure.tiny.append.Text                                                                17 ns   15 ns  -12%
Pure.tiny.cons.Text                                                                  31 ns   21 ns  -31%
Pure.tiny.drop.LazyText                                                              14 ns   13 ns   -6%
Pure.tiny.filter.LazyText                                                            24 ns   17 ns  -29%
Pure.tiny.filter.Text                                                                26 ns   19 ns  -27%
Pure.tiny.filter.filter.LazyText                                                     25 ns   17 ns  -30%
Pure.tiny.filter.filter.Text                                                         26 ns   19 ns  -27%
Pure.tiny.foldl'.LazyText                                                            44 ns   38 ns  -13%
Pure.tiny.foldl'.Text                                                                26 ns   20 ns  -21%
Pure.tiny.foldr.LazyText                                                             68 ns   62 ns   -9%
Pure.tiny.foldr.Text                                                                 54 ns   47 ns  -14%
Pure.tiny.init.Text                                                                 2.0 ns  1.9 ns   -7%
Pure.tiny.intercalate.Text                                                          8.5 ns  9.0 ns   +5%
Pure.tiny.intersperse.Text                                                           59 ns   54 ns   -8%
Pure.tiny.isInfixOf.Text                                                             67 ns   64 ns   -5%
Pure.tiny.length . drop 1 . unpack.LazyText                                          69 ns   62 ns  -10%
Pure.tiny.length . drop 1 . unpack.Text                                              60 ns   53 ns  -11%
Pure.tiny.length . unpack.LazyText                                                   16 ns  6.1 ns  -60%
Pure.tiny.length . unpack.Text                                                       11 ns  3.6 ns  -68%
Pure.tiny.length.drop.LazyText                                                       22 ns   25 ns  +10%
Pure.tiny.length.filter.LazyText                                                     24 ns   16 ns  -33%
Pure.tiny.length.filter.Text                                                         13 ns  4.7 ns  -63%
Pure.tiny.length.filter.filter.LazyText                                              24 ns   16 ns  -32%
Pure.tiny.length.filter.filter.Text                                                  13 ns  4.7 ns  -63%
Pure.tiny.length.intersperse.LazyText                                                15 ns   18 ns  +15%
Pure.tiny.length.replicate char.LazyText                                             58 ns   55 ns   -6%
Pure.tiny.length.tail.LazyText                                                       16 ns   13 ns  -15%
Pure.tiny.length.tail.Text                                                           13 ns   11 ns  -17%
Pure.tiny.length.toLower.LazyText                                                    47 ns   41 ns  -11%
Pure.tiny.length.toLower.Text                                                        37 ns   31 ns  -17%
Pure.tiny.length.toTitle.LazyText                                                    68 ns   56 ns  -17%
Pure.tiny.length.toTitle.Text                                                        41 ns   36 ns  -12%
Pure.tiny.length.toUpper.LazyText                                                    48 ns   41 ns  -13%
Pure.tiny.length.toUpper.Text                                                        38 ns   31 ns  -17%
Pure.tiny.length.words.LazyText                                                      52 ns   46 ns  -11%
Pure.tiny.map.LazyText                                                               41 ns   32 ns  -21%
Pure.tiny.map.Text                                                                   32 ns   24 ns  -26%
Pure.tiny.map.map.LazyText                                                           43 ns   35 ns  -18%
Pure.tiny.map.map.Text                                                               35 ns   27 ns  -23%
Pure.tiny.mapAccumL.LazyText                                                         85 ns   70 ns  -17%
Pure.tiny.mapAccumL.Text                                                             33 ns   24 ns  -28%
Pure.tiny.replicate char.Text                                                        32 ns   30 ns   -6%
Pure.tiny.replicate string.LazyText                                                  25 ns   24 ns   -5%
Pure.tiny.stimes.LazyText                                                           386 ns  410 ns   +6%
Pure.tiny.stimes.Text                                                                45 ns   41 ns  -10%
Pure.tiny.tail.LazyText                                                             6.8 ns  5.8 ns  -14%
Pure.tiny.tail.Text                                                                 2.7 ns  2.0 ns  -25%
Pure.tiny.take.Text                                                                  10 ns   15 ns  +52%
Pure.tiny.toLower.LazyText                                                           35 ns   31 ns  -11%
Pure.tiny.toLower.Text                                                               27 ns   19 ns  -29%
Pure.tiny.toTitle.LazyText                                                           54 ns   46 ns  -15%
Pure.tiny.toTitle.Text                                                               31 ns   27 ns  -13%
Pure.tiny.toUpper.LazyText                                                           36 ns   29 ns  -19%
Pure.tiny.toUpper.Text                                                               26 ns   19 ns  -28%
Pure.tiny.uncons.LazyText                                                            20 ns   15 ns  -24%
Pure.tiny.uncons.Text                                                               3.0 ns  2.1 ns  -31%
Pure.tiny.words.LazyText                                                             71 ns   66 ns   -7%
Pure.tiny.zipWith.Text                                                              105 ns   86 ns  -17%
ReadNumbers.DecimalLazyText                                                         944 μs  862 μs   -8%
ReadNumbers.DecimalText                                                             374 μs  312 μs  -16%
ReadNumbers.DoubleLazyText                                                          3.7 ms  3.5 ms   -5%
ReadNumbers.HexadecimalText                                                         867 μs  765 μs  -11%
Stream.restreamUtf16BE                                                               40 ms   35 ms  -12%
Stream.restreamUtf16LE                                                               40 ms   35 ms  -13%
Stream.restreamUtf32BE                                                               55 ms   50 ms   -9%
Stream.restreamUtf32LE                                                               56 ms   51 ms   -9%
Stream.stream.LazyText                                                               21 ms   16 ms  -23%
Stream.stream.Text                                                                   12 ms  8.3 ms  -29%
WordFrequencies.Text                                                                149 ms  140 ms   -6%

@meooow25
Copy link
Contributor Author

@Lysxia would you please take a look?

@Lysxia
Copy link
Contributor

Lysxia commented May 25, 2025

I'm currently traveling and of limited availability. I can have a look next week.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Improve utf8LengthByLeader
2 participants