was idx | now idx | diff idx | was bidx | now bidx | diff bidx | |
---|---|---|---|---|---|---|
small 1 | 0.068663 | 0.061373 | -10.62 | 0.071392 | 0.008054 | -88.72 |
medium 1 | 0.503822 | 0.334602 | -33.59 | 0.545443 | 0.010590 | -98.06 |
big 1 | 4.697361 | 2.865704 | -38.99 | 5.058999 | 0.027877 | -99.45 |
small 2 | 0.069861 | 0.053189 | -23.86 | 0.073254 | 0.034132 | -53.41 |
medium 2 | 0.509033 | 0.336184 | -33.96 | 0.548318 | 0.235357 | -57.08 |
big 2 | 4.730817 | 3.117069 | -34.11 | 5.062775 | 2.049732 | -59.51 |
small 4 | 0.077225 | 0.058108 | -24.75 | 0.079227 | 0.036833 | -53.51 |
medium 4 | 0.510799 | 0.340637 | -33.31 | 0.554923 | 0.242836 | -56.24 |
big 4 | 4.702089 | 3.096297 | -34.15 | 5.069510 | 2.052939 | -59.50 |
small 6 | 0.078827 | 0.057426 | -27.15 | 0.080145 | 0.038325 | -52.18 |
medium 6 | 0.511529 | 0.339824 | -33.57 | 0.559667 | 0.241253 | -56.89 |
big 6 | 4.700362 | 3.093604 | -34.18 | 5.076374 | 2.053248 | -59.55 |
small 10 | 0.088149 | 0.077928 | -11.60 | 0.084642 | 0.070408 | -16.82 |
medium 10 | 0.517613 | 0.511492 | -1.18 | 0.568815 | 0.555601 | -2.32 |
big 10 | 4.699969 | 4.695120 | -0.10 | 5.085927 | 5.074980 | -0.22 |
small 14 | 0.089366 | 0.080371 | -10.07 | 0.089447 | 0.072904 | -18.49 |
medium 14 | 0.523864 | 0.511200 | -2.42 | 0.575362 | 0.556926 | -3.20 |
big 14 | 4.706731 | 4.701650 | -0.11 | 5.092217 | 5.071227 | -0.41 |
small 18 | 0.095913 | 0.082964 | -13.50 | 0.098844 | 0.078447 | -20.64 |
medium 18 | 0.549657 | 0.531382 | -3.32 | 0.585257 | 0.561600 | -4.04 |
big 18 | 4.744925 | 4.725939 | -0.40 | 5.100282 | 5.076517 | -0.47 |
Last active
October 8, 2023 14:51
-
-
Save funny-falcon/a373bb9e97724713be52c70178981ffa to your computer and use it in GitHub Desktop.
Crystal String.index patch benchmark
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require "benchmark" | |
b = "b" | |
ab = "ab" | |
baba = "baba" | |
baba6 = "ababaa" | |
baba10 = "aaababaaaa" | |
baba14 = "aaaaababaaaaaa" | |
baba18 = "aaaaaaababaaaaaaaa" | |
txt_small = "a£€𐍈"*2 + baba18 + "a"*2 | |
txt_medium = "a£€𐍈"*20 + baba18 + "a"*2 | |
txt_big = "a£€𐍈"*200 + baba18 + "a"*2 | |
N = 1000000 | |
i = 0 | |
Benchmark.bm do |x| | |
x.report("just heat up") do | |
10000000.times {|j| i = (j.to_f**2.3 % 1e9).to_i } | |
end | |
x.report("small 1") do | |
N.times { i = txt_small.byte_index(b) } | |
end | |
x.report("medium 1") do | |
N.times { i = txt_medium.byte_index(b) } | |
end | |
x.report("big 1") do | |
N.times { i = txt_big.byte_index(b) } | |
end | |
x.report("small 2") do | |
N.times { i = txt_small.byte_index(ab) } | |
end | |
x.report("medium 2") do | |
N.times { i = txt_medium.byte_index(ab) } | |
end | |
x.report("big 2") do | |
N.times { i = txt_big.byte_index(ab) } | |
end | |
x.report("small 4") do | |
N.times { i = txt_small.byte_index(baba) } | |
end | |
x.report("medium 4") do | |
N.times { i = txt_medium.byte_index(baba) } | |
end | |
x.report("big 4") do | |
N.times { i = txt_big.byte_index(baba) } | |
end | |
x.report("small 6") do | |
N.times { i = txt_small.byte_index(baba6) } | |
end | |
x.report("medium 6") do | |
N.times { i = txt_medium.byte_index(baba6) } | |
end | |
x.report("big 6") do | |
N.times { i = txt_big.byte_index(baba6) } | |
end | |
x.report("small 10") do | |
N.times { i = txt_small.byte_index(baba10) } | |
end | |
x.report("medium 10") do | |
N.times { i = txt_medium.byte_index(baba10) } | |
end | |
x.report("big 10") do | |
N.times { i = txt_big.byte_index(baba10) } | |
end | |
x.report("small 14") do | |
N.times { i = txt_small.byte_index(baba14) } | |
end | |
x.report("medium 14") do | |
N.times { i = txt_medium.byte_index(baba14) } | |
end | |
x.report("big 14") do | |
N.times { i = txt_big.byte_index(baba14) } | |
end | |
x.report("small 18") do | |
N.times { i = txt_small.byte_index(baba18) } | |
end | |
x.report("medium 18") do | |
N.times { i = txt_medium.byte_index(baba18) } | |
end | |
x.report("big 18") do | |
N.times { i = txt_big.byte_index(baba18) } | |
end | |
end | |
p i |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require "benchmark" | |
b = "b" | |
ab = "ab" | |
baba = "baba" | |
baba6 = "ababaa" | |
baba10 = "aaababaaaa" | |
baba14 = "aaaaababaaaaaa" | |
baba18 = "aaaaaaababaaaaaaaa" | |
txt_small = "a£€𐍈"*2 + baba18 + "a"*2 | |
txt_medium = "a£€𐍈"*20 + baba18 + "a"*2 | |
txt_big = "a£€𐍈"*200 + baba18 + "a"*2 | |
N = 1000000 | |
i = 0 | |
Benchmark.bm do |x| | |
x.report("just heat up") do | |
10000000.times {|j| i = (j.to_f**2.3 % 1e9).to_i } | |
end | |
x.report("small 1") do | |
N.times { i = txt_small.index(b) } | |
end | |
x.report("medium 1") do | |
N.times { i = txt_medium.index(b) } | |
end | |
x.report("big 1") do | |
N.times { i = txt_big.index(b) } | |
end | |
x.report("small 2") do | |
N.times { i = txt_small.index(ab) } | |
end | |
x.report("medium 2") do | |
N.times { i = txt_medium.index(ab) } | |
end | |
x.report("big 2") do | |
N.times { i = txt_big.index(ab) } | |
end | |
x.report("small 4") do | |
N.times { i = txt_small.index(baba) } | |
end | |
x.report("medium 4") do | |
N.times { i = txt_medium.index(baba) } | |
end | |
x.report("big 4") do | |
N.times { i = txt_big.index(baba) } | |
end | |
x.report("small 6") do | |
N.times { i = txt_small.index(baba6) } | |
end | |
x.report("medium 6") do | |
N.times { i = txt_medium.index(baba6) } | |
end | |
x.report("big 6") do | |
N.times { i = txt_big.index(baba6) } | |
end | |
x.report("small 10") do | |
N.times { i = txt_small.index(baba10) } | |
end | |
x.report("medium 10") do | |
N.times { i = txt_medium.index(baba10) } | |
end | |
x.report("big 10") do | |
N.times { i = txt_big.index(baba10) } | |
end | |
x.report("small 14") do | |
N.times { i = txt_small.index(baba14) } | |
end | |
x.report("medium 14") do | |
N.times { i = txt_medium.index(baba14) } | |
end | |
x.report("big 14") do | |
N.times { i = txt_big.index(baba14) } | |
end | |
x.report("small 18") do | |
N.times { i = txt_small.index(baba18) } | |
end | |
x.report("medium 18") do | |
N.times { i = txt_medium.index(baba18) } | |
end | |
x.report("big 18") do | |
N.times { i = txt_big.index(baba18) } | |
end | |
end | |
p i |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment