diff --git a/truffleruby-3.2.4.fastruby b/truffleruby-3.2.4.fastruby index c3a1e4d..a8a3edd 100644 --- a/truffleruby-3.2.4.fastruby +++ b/truffleruby-3.2.4.fastruby @@ -1,922 +1,922 @@ $ ruby -v code/general/array-argument-vs-splat-arguments.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- Function with single Array argument - 217.306M i/100ms + 288.931M i/100ms Function with splat arguments - 1.783k i/100ms + 1.823k i/100ms Calculating ------------------------------------- Function with single Array argument - 3.097B (± 5.5%) i/s - 15.429B in 4.999306s + 3.027B (± 2.0%) i/s - 15.313B in 5.061606s Function with splat arguments - 20.107k (±10.1%) i/s - 99.848k in 5.040308s + 19.298k (± 9.4%) i/s - 96.619k in 5.063037s Comparison: -Function with single Array argument: 3097105956.8 i/s -Function with splat arguments: 20107.3 i/s - 154029.31x (± 0.00) slower +Function with single Array argument: 3026669798.6 i/s +Function with splat arguments: 19297.8 i/s - 156840.42x (± 0.00) slower $ ruby -v code/general/assignment.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Parallel Assignment 316.950M i/100ms + Parallel Assignment 297.969M i/100ms Sequential Assignment - 313.086M i/100ms + 302.125M i/100ms Calculating ------------------------------------- - Parallel Assignment 3.170B (± 2.9%) i/s - 15.848B in 5.003859s + Parallel Assignment 2.994B (± 3.9%) i/s - 15.196B in 5.084829s Sequential Assignment - 3.170B (± 2.0%) i/s - 15.967B in 5.039103s + 2.999B (± 3.3%) i/s - 15.106B in 5.043021s Comparison: -Sequential Assignment: 3170054908.2 i/s - Parallel Assignment: 3170033584.5 i/s - same-ish: difference falls within error +Sequential Assignment: 2998919796.7 i/s + Parallel Assignment: 2993624208.6 i/s - same-ish: difference falls within error $ ruby -v code/general/attr-accessor-vs-getter-and-setter.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - getter_and_setter 316.746M i/100ms - attr_accessor 313.174M i/100ms + getter_and_setter 301.751M i/100ms + attr_accessor 299.997M i/100ms Calculating ------------------------------------- - getter_and_setter 3.164B (± 2.6%) i/s - 15.837B in 5.009679s - attr_accessor 3.161B (± 3.2%) i/s - 15.972B in 5.057669s + getter_and_setter 3.027B (± 1.7%) i/s - 15.389B in 5.084902s + attr_accessor 3.008B (± 3.9%) i/s - 15.300B in 5.095078s Comparison: - getter_and_setter: 3163631926.4 i/s - attr_accessor: 3161369132.1 i/s - same-ish: difference falls within error + getter_and_setter: 3027347238.8 i/s + attr_accessor: 3008060491.5 i/s - same-ish: difference falls within error $ ruby -v code/general/begin-rescue-vs-respond-to.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - begin...rescue 12.848k i/100ms - respond_to? 316.542M i/100ms + begin...rescue 12.764k i/100ms + respond_to? 301.465M i/100ms Calculating ------------------------------------- - begin...rescue 101.371k (± 7.6%) i/s - 513.920k in 5.107902s - respond_to? 3.111B (± 2.2%) i/s - 15.827B in 5.089911s + begin...rescue 100.726k (± 7.1%) i/s - 510.560k in 5.103076s + respond_to? 3.047B (± 1.7%) i/s - 15.375B in 5.046518s Comparison: - respond_to?: 3111104929.4 i/s - begin...rescue: 101371.0 i/s - 30690.27x (± 0.00) slower + respond_to?: 3047450316.2 i/s + begin...rescue: 100725.6 i/s - 30254.97x (± 0.00) slower $ ruby -v code/general/block-apply-method.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - normal 305.031M i/100ms - &method 18.196M i/100ms + normal 305.985M i/100ms + &method 18.224M i/100ms Calculating ------------------------------------- - normal 3.148B (± 3.5%) i/s - 15.862B in 5.045836s - &method 182.593M (± 1.3%) i/s - 927.994M in 5.083229s + normal 3.007B (± 2.8%) i/s - 15.299B in 5.092722s + &method 182.151M (± 1.4%) i/s - 911.205M in 5.003488s Comparison: - normal: 3147686615.5 i/s - &method: 182592685.2 i/s - 17.24x (± 0.00) slower + normal: 3006686205.8 i/s + &method: 182151010.1 i/s - 16.51x (± 0.00) slower $ ruby -v code/general/define_method-vs-module-eval.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- module_eval with string - 177.000 i/100ms - define_method 160.000 i/100ms + 142.000 i/100ms + define_method 145.000 i/100ms Calculating ------------------------------------- module_eval with string - 3.874k (±55.0%) i/s - 7.434k in 5.024875s - define_method 11.720k (±43.4%) i/s - 11.520k in 5.346192s + 4.245k (±47.9%) i/s - 7.952k in 6.507665s + define_method 11.641k (±42.2%) i/s - 8.265k in 6.312941s Comparison: - define_method: 11720.1 i/s -module_eval with string: 3874.4 i/s - 3.03x (± 0.00) slower + define_method: 11641.5 i/s +module_eval with string: 4244.7 i/s - 2.74x (± 0.00) slower $ ruby -v code/general/format-vs-round-and-to-s.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Float#round 243.381k i/100ms - Kernel#format 184.943k i/100ms - String#% 145.353k i/100ms + Float#round 249.435k i/100ms + Kernel#format 177.018k i/100ms + String#% 174.884k i/100ms Calculating ------------------------------------- - Float#round 2.586M (± 3.2%) i/s - 13.143M in 5.088260s - Kernel#format 1.856M (± 3.0%) i/s - 9.432M in 5.086943s - String#% 1.466M (± 2.3%) i/s - 7.413M in 5.059519s + Float#round 2.484M (± 6.4%) i/s - 12.721M in 5.157703s + Kernel#format 1.738M (± 2.2%) i/s - 8.851M in 5.093936s + String#% 1.707M (± 6.7%) i/s - 8.569M in 5.053894s Comparison: - Float#round: 2585719.2 i/s - Kernel#format: 1855899.9 i/s - 1.39x (± 0.00) slower - String#%: 1466003.1 i/s - 1.76x (± 0.00) slower + Float#round: 2483533.7 i/s + Kernel#format: 1738435.1 i/s - 1.43x (± 0.00) slower + String#%: 1707190.0 i/s - 1.45x (± 0.00) slower $ ruby -v code/general/hash-vs-openstruct-on-access.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Hash 317.813M i/100ms - OpenStruct 312.262M i/100ms + Hash 311.412M i/100ms + OpenStruct 315.209M i/100ms Calculating ------------------------------------- - Hash 3.109B (± 4.7%) i/s - 15.573B in 5.021185s - OpenStruct 3.159B (± 2.7%) i/s - 15.925B in 5.044654s + Hash 3.034B (± 1.5%) i/s - 15.259B in 5.031275s + OpenStruct 3.027B (± 2.1%) i/s - 15.130B in 5.000834s Comparison: - OpenStruct: 3159471360.0 i/s - Hash: 3108899294.7 i/s - same-ish: difference falls within error + Hash: 3033578828.3 i/s + OpenStruct: 3026974697.7 i/s - same-ish: difference falls within error $ ruby -v code/general/hash-vs-openstruct.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Hash 308.194M i/100ms - OpenStruct 4.203k i/100ms + Hash 302.769M i/100ms + OpenStruct 4.407k i/100ms Calculating ------------------------------------- - Hash 3.135B (± 3.2%) i/s - 15.718B in 5.018287s - OpenStruct 29.504k (±14.3%) i/s - 147.105k in 5.098785s + Hash 2.915B (± 6.7%) i/s - 14.533B in 5.015881s + OpenStruct 41.649k (±22.6%) i/s - 198.315k in 5.062240s Comparison: - Hash: 3135498803.9 i/s - OpenStruct: 29503.7 i/s - 106274.94x (± 0.00) slower + Hash: 2915318665.2 i/s + OpenStruct: 41649.1 i/s - 69997.19x (± 0.00) slower $ ruby -v code/general/inheritance-check.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - less than or equal 807.877k i/100ms - ancestors.include? 218.746k i/100ms + less than or equal 958.387k i/100ms + ancestors.include? 217.200k i/100ms Calculating ------------------------------------- - less than or equal 9.630M (± 5.1%) i/s - 48.473M in 5.047580s - ancestors.include? 2.270M (± 6.8%) i/s - 11.375M in 5.046548s + less than or equal 10.004M (± 5.5%) i/s - 50.795M in 5.092010s + ancestors.include? 2.196M (± 7.8%) i/s - 11.077M in 5.086957s Comparison: - less than or equal: 9629719.6 i/s - ancestors.include?: 2269554.5 i/s - 4.24x (± 0.00) slower + less than or equal: 10004324.7 i/s + ancestors.include?: 2195775.9 i/s - 4.56x (± 0.00) slower $ ruby -v code/general/loop-vs-while-true.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- While Loop 1.000 i/100ms Kernel loop 1.000 i/100ms Calculating ------------------------------------- - While Loop 30.989 (± 6.5%) i/s - 155.000 in 5.015805s - Kernel loop 31.697 (± 3.2%) i/s - 159.000 in 5.021136s + While Loop 30.140 (± 3.3%) i/s - 151.000 in 5.015907s + Kernel loop 30.423 (± 3.3%) i/s - 152.000 in 5.002083s Comparison: - Kernel loop: 31.7 i/s - While Loop: 31.0 i/s - same-ish: difference falls within error + Kernel loop: 30.4 i/s + While Loop: 30.1 i/s - same-ish: difference falls within error $ ruby -v code/general/raise-vs-e2mmap.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] $ ruby -v code/array/array-first-vs-index.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Array#[0] 305.567M i/100ms - Array#first 310.906M i/100ms + Array#[0] 299.958M i/100ms + Array#first 280.311M i/100ms Calculating ------------------------------------- - Array#[0] 3.145B (± 3.0%) i/s - 15.889B in 5.056298s - Array#first 3.079B (± 3.9%) i/s - 15.545B in 5.057635s + Array#[0] 3.023B (± 2.7%) i/s - 15.298B in 5.064719s + Array#first 3.021B (± 1.7%) i/s - 15.137B in 5.012429s Comparison: - Array#[0]: 3145443427.0 i/s - Array#first: 3078899247.1 i/s - same-ish: difference falls within error + Array#[0]: 3022854042.6 i/s + Array#first: 3020733047.5 i/s - same-ish: difference falls within error $ ruby -v code/array/array-last-vs-index.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Array#[-1] 311.840M i/100ms - Array#last 306.518M i/100ms + Array#[-1] 303.075M i/100ms + Array#last 311.535M i/100ms Calculating ------------------------------------- - Array#[-1] 3.107B (± 2.4%) i/s - 15.592B in 5.020967s - Array#last 3.167B (± 1.7%) i/s - 15.939B in 5.034721s + Array#[-1] 3.043B (± 2.2%) i/s - 15.457B in 5.081566s + Array#last 3.037B (± 1.4%) i/s - 15.265B in 5.027972s Comparison: - Array#last: 3166741471.6 i/s - Array#[-1]: 3107129081.5 i/s - same-ish: difference falls within error + Array#[-1]: 3043302025.4 i/s + Array#last: 3036631516.8 i/s - same-ish: difference falls within error $ ruby -v code/array/bsearch-vs-find.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- find 1.000 i/100ms - bsearch 901.220k i/100ms + bsearch 902.794k i/100ms Calculating ------------------------------------- - find 13.703 (± 0.0%) i/s - 69.000 in 5.035494s - bsearch 9.013M (± 2.5%) i/s - 45.061M in 5.002832s + find 13.513 (± 7.4%) i/s - 68.000 in 5.042660s + bsearch 9.104M (± 3.4%) i/s - 46.042M in 5.063436s Comparison: - bsearch: 9013194.1 i/s - find: 13.7 i/s - 657760.66x (± 0.00) slower + bsearch: 9103971.5 i/s + find: 13.5 i/s - 673728.85x (± 0.00) slower $ ruby -v code/array/insert-vs-unshift.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- Array#unshift 1.000 i/100ms Array#insert 1.000 i/100ms Calculating ------------------------------------- - Array#unshift 0.210 (± 0.0%) i/s - 2.000 in 9.530003s - Array#insert 1.384 (± 0.0%) i/s - 7.000 in 5.059705s + Array#unshift 0.211 (± 0.0%) i/s - 2.000 in 9.463049s + Array#insert 1.387 (± 0.0%) i/s - 7.000 in 5.047064s Comparison: Array#insert: 1.4 i/s - Array#unshift: 0.2 i/s - 6.59x (± 0.00) slower + Array#unshift: 0.2 i/s - 6.56x (± 0.00) slower $ ruby -v code/array/length-vs-size-vs-count.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Array#length 317.118M i/100ms - Array#size 307.559M i/100ms - Array#count 321.331M i/100ms + Array#length 302.290M i/100ms + Array#size 308.066M i/100ms + Array#count 306.070M i/100ms Calculating ------------------------------------- - Array#length 3.106B (± 3.4%) i/s - 15.539B in 5.008226s - Array#size 3.068B (± 3.4%) i/s - 15.378B in 5.019064s - Array#count 3.123B (± 2.2%) i/s - 15.745B in 5.044278s + Array#length 3.018B (± 3.1%) i/s - 15.115B in 5.012604s + Array#size 3.017B (± 2.8%) i/s - 15.095B in 5.007911s + Array#count 3.026B (± 1.5%) i/s - 15.303B in 5.058358s Comparison: - Array#count: 3122998313.0 i/s - Array#length: 3106422839.1 i/s - same-ish: difference falls within error - Array#size: 3067605959.4 i/s - same-ish: difference falls within error + Array#count: 3026080378.0 i/s + Array#length: 3018423020.8 i/s - same-ish: difference falls within error + Array#size: 3016906386.7 i/s - same-ish: difference falls within error $ ruby -v code/array/shuffle-first-vs-sample.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Array#shuffle.first 36.453k i/100ms - Array#sample 3.879M i/100ms + Array#shuffle.first 35.299k i/100ms + Array#sample 3.723M i/100ms Calculating ------------------------------------- - Array#shuffle.first 369.902k (± 2.9%) i/s - 1.859M in 5.030603s - Array#sample 37.949M (± 1.1%) i/s - 190.079M in 5.009457s + Array#shuffle.first 362.024k (± 2.0%) i/s - 1.836M in 5.072510s + Array#sample 37.399M (± 0.9%) i/s - 189.897M in 5.077977s Comparison: - Array#sample: 37948806.5 i/s - Array#shuffle.first: 369901.7 i/s - 102.59x (± 0.00) slower + Array#sample: 37399362.0 i/s + Array#shuffle.first: 362024.0 i/s - 103.31x (± 0.00) slower $ ruby -v code/date/iso8601-vs-parse.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Date.iso8601 915.000 i/100ms - Date.parse 522.000 i/100ms + Date.iso8601 941.000 i/100ms + Date.parse 653.000 i/100ms Calculating ------------------------------------- - Date.iso8601 21.045k (±42.9%) i/s - 86.010k in 5.019706s - Date.parse 8.181k (±22.8%) i/s - 38.106k in 5.052508s + Date.iso8601 21.450k (±43.7%) i/s - 88.454k in 5.150258s + Date.parse 7.784k (±23.9%) i/s - 36.568k in 5.059825s Comparison: - Date.iso8601: 21045.4 i/s - Date.parse: 8181.0 i/s - 2.57x (± 0.00) slower + Date.iso8601: 21449.6 i/s + Date.parse: 7784.2 i/s - 2.76x (± 0.00) slower $ ruby -v code/enumerable/each-push-vs-map.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Array#each + push 290.157k i/100ms - Array#map 1.797M i/100ms + Array#each + push 282.925k i/100ms + Array#map 1.782M i/100ms Calculating ------------------------------------- - Array#each + push 3.229M (± 3.0%) i/s - 16.249M in 5.036525s - Array#map 18.459M (± 9.9%) i/s - 91.634M in 5.023232s + Array#each + push 3.213M (± 7.0%) i/s - 16.127M in 5.047563s + Array#map 19.725M (± 7.7%) i/s - 98.015M in 5.001730s Comparison: - Array#map: 18458871.3 i/s - Array#each + push: 3229142.9 i/s - 5.72x (± 0.00) slower + Array#map: 19725366.0 i/s + Array#each + push: 3212587.0 i/s - 6.14x (± 0.00) slower $ ruby -v code/enumerable/each-vs-for-loop.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - For loop 11.365M i/100ms - #each 35.421M i/100ms + For loop 11.682M i/100ms + #each 35.457M i/100ms Calculating ------------------------------------- - For loop 117.486M (± 1.5%) i/s - 590.968M in 5.031335s - #each 351.890M (± 1.7%) i/s - 1.771B in 5.034560s + For loop 117.956M (± 1.7%) i/s - 595.802M in 5.052642s + #each 353.447M (± 0.9%) i/s - 1.773B in 5.016215s Comparison: - #each: 351889715.6 i/s - For loop: 117485610.5 i/s - 3.00x (± 0.00) slower + #each: 353446913.8 i/s + For loop: 117955894.3 i/s - 3.00x (± 0.00) slower $ ruby -v code/enumerable/each_with_index-vs-while-loop.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - While Loop 1.386M i/100ms - each_with_index 2.370M i/100ms + While Loop 1.346M i/100ms + each_with_index 2.337M i/100ms Calculating ------------------------------------- - While Loop 14.199M (± 2.6%) i/s - 72.058M in 5.078125s - each_with_index 27.464M (± 4.0%) i/s - 137.456M in 5.014467s + While Loop 14.215M (± 3.4%) i/s - 71.349M in 5.025356s + each_with_index 23.575M (± 2.9%) i/s - 119.213M in 5.060581s Comparison: - each_with_index: 27464465.7 i/s - While Loop: 14198926.5 i/s - 1.93x (± 0.00) slower + each_with_index: 23575456.6 i/s + While Loop: 14214684.6 i/s - 1.66x (± 0.00) slower $ ruby -v code/enumerable/inject-symbol-vs-block.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - inject symbol 302.556k i/100ms - inject to_proc 310.693k i/100ms - inject block 310.677k i/100ms + inject symbol 267.754k i/100ms + inject to_proc 307.669k i/100ms + inject block 311.050k i/100ms Calculating ------------------------------------- - inject symbol 3.096M (± 1.7%) i/s - 15.733M in 5.082853s - inject to_proc 3.087M (± 2.8%) i/s - 15.535M in 5.036855s - inject block 3.101M (± 2.3%) i/s - 15.534M in 5.011877s + inject symbol 3.102M (± 1.7%) i/s - 15.530M in 5.008256s + inject to_proc 3.098M (± 1.6%) i/s - 15.691M in 5.065896s + inject block 3.083M (± 3.5%) i/s - 15.553M in 5.051689s Comparison: - inject block: 3101371.9 i/s - inject symbol: 3096259.7 i/s - same-ish: difference falls within error - inject to_proc: 3086868.2 i/s - same-ish: difference falls within error + inject symbol: 3101790.4 i/s + inject to_proc: 3098289.7 i/s - same-ish: difference falls within error + inject block: 3083061.3 i/s - same-ish: difference falls within error $ ruby -v code/enumerable/map-flatten-vs-flat_map.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- -Array#map.flatten(1) 21.797k i/100ms - Array#map.flatten 24.915k i/100ms - Array#flat_map 56.221k i/100ms +Array#map.flatten(1) 19.600k i/100ms + Array#map.flatten 25.177k i/100ms + Array#flat_map 55.574k i/100ms Calculating ------------------------------------- -Array#map.flatten(1) 259.828k (± 8.5%) i/s - 1.308M in 5.088769s - Array#map.flatten 263.491k (± 7.5%) i/s - 1.320M in 5.040351s - Array#flat_map 575.984k (± 4.9%) i/s - 2.923M in 5.089929s +Array#map.flatten(1) 258.817k (± 6.3%) i/s - 1.294M in 5.019038s + Array#map.flatten 264.623k (± 5.3%) i/s - 1.334M in 5.057434s + Array#flat_map 561.040k (± 3.9%) i/s - 2.834M in 5.060545s Comparison: - Array#flat_map: 575984.1 i/s - Array#map.flatten: 263491.0 i/s - 2.19x (± 0.00) slower -Array#map.flatten(1): 259827.9 i/s - 2.22x (± 0.00) slower + Array#flat_map: 561039.9 i/s + Array#map.flatten: 264623.1 i/s - 2.12x (± 0.00) slower +Array#map.flatten(1): 258816.9 i/s - 2.17x (± 0.00) slower $ ruby -v code/enumerable/reverse-each-vs-reverse_each.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Array#reverse.each 347.149k i/100ms - Array#reverse_each 2.371M i/100ms + Array#reverse.each 316.405k i/100ms + Array#reverse_each 2.310M i/100ms Calculating ------------------------------------- - Array#reverse.each 3.451M (± 5.2%) i/s - 17.357M in 5.045603s - Array#reverse_each 28.935M (± 3.6%) i/s - 144.618M in 5.006372s + Array#reverse.each 3.427M (± 6.6%) i/s - 17.086M in 5.017699s + Array#reverse_each 23.355M (± 3.1%) i/s - 117.832M in 5.049350s Comparison: - Array#reverse_each: 28934643.9 i/s - Array#reverse.each: 3450563.9 i/s - 8.39x (± 0.00) slower + Array#reverse_each: 23355259.6 i/s + Array#reverse.each: 3426870.3 i/s - 6.82x (± 0.00) slower $ ruby -v code/enumerable/select-first-vs-detect.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- Enumerable#select.first - 939.695k i/100ms - Enumerable#detect 4.594M i/100ms + 673.463k i/100ms + Enumerable#detect 4.654M i/100ms Calculating ------------------------------------- Enumerable#select.first - 10.129M (± 8.3%) i/s - 201.095M in 20.045811s - Enumerable#detect 46.328M (± 2.2%) i/s - 928.060M in 20.043232s + 10.161M (± 8.9%) i/s - 200.692M in 20.001396s + Enumerable#detect 46.374M (± 1.9%) i/s - 930.790M in 20.079571s Comparison: - Enumerable#detect: 46328322.8 i/s -Enumerable#select.first: 10129484.8 i/s - 4.57x (± 0.00) slower + Enumerable#detect: 46374243.6 i/s +Enumerable#select.first: 10161307.0 i/s - 4.56x (± 0.00) slower $ ruby -v code/enumerable/select-last-vs-reverse-detect.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- Enumerable#reverse.detect - 318.877k i/100ms + 321.968k i/100ms Enumerable#select.last - 497.639k i/100ms + 546.355k i/100ms Calculating ------------------------------------- Enumerable#reverse.detect - 3.357M (± 7.5%) i/s - 16.900M in 5.074192s + 3.477M (± 4.3%) i/s - 17.386M in 5.010693s Enumerable#select.last - 5.330M (± 7.4%) i/s - 26.873M in 5.081616s + 5.453M (± 3.5%) i/s - 27.318M in 5.015832s Comparison: -Enumerable#select.last: 5329599.4 i/s -Enumerable#reverse.detect: 3357110.2 i/s - 1.59x (± 0.00) slower +Enumerable#select.last: 5453169.3 i/s +Enumerable#reverse.detect: 3476647.3 i/s - 1.57x (± 0.00) slower $ ruby -v code/enumerable/sort-vs-sort_by.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- Enumerable#sort_by (Symbol#to_proc) - 3.568k i/100ms - Enumerable#sort_by 3.788k i/100ms - Enumerable#sort 4.880k i/100ms + 3.946k i/100ms + Enumerable#sort_by 2.598k i/100ms + Enumerable#sort 4.813k i/100ms Calculating ------------------------------------- Enumerable#sort_by (Symbol#to_proc) - 40.412k (±10.8%) i/s - 199.808k in 5.025093s - Enumerable#sort_by 34.159k (±35.4%) i/s - 132.580k in 5.080899s - Enumerable#sort 55.694k (± 4.4%) i/s - 278.160k in 5.004985s + 23.659k (±37.0%) i/s - 90.758k in 5.148712s + Enumerable#sort_by 39.905k (±12.7%) i/s - 194.850k in 5.035608s + Enumerable#sort 53.826k (± 4.0%) i/s - 269.528k in 5.016456s Comparison: - Enumerable#sort: 55693.6 i/s -Enumerable#sort_by (Symbol#to_proc): 40412.3 i/s - 1.38x (± 0.00) slower - Enumerable#sort_by: 34159.2 i/s - 1.63x (± 0.00) slower + Enumerable#sort: 53825.6 i/s + Enumerable#sort_by: 39904.8 i/s - 1.35x (± 0.00) slower +Enumerable#sort_by (Symbol#to_proc): 23659.0 i/s - 2.28x (± 0.00) slower $ ruby -v code/enumerable/sort_by-first-vs-min_by.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Enumerable#min_by 906.316k i/100ms + Enumerable#min_by 960.873k i/100ms Enumerable#sort_by...first - 8.133k i/100ms + 9.083k i/100ms Calculating ------------------------------------- - Enumerable#min_by 9.213M (± 2.9%) i/s - 46.222M in 5.021794s + Enumerable#min_by 9.625M (± 2.2%) i/s - 49.005M in 5.093658s Enumerable#sort_by...first - 106.894k (± 3.8%) i/s - 536.778k in 5.029656s + 106.323k (± 3.5%) i/s - 535.897k in 5.046863s Comparison: - Enumerable#min_by: 9212547.7 i/s -Enumerable#sort_by...first: 106894.2 i/s - 86.18x (± 0.00) slower + Enumerable#min_by: 9625486.4 i/s +Enumerable#sort_by...first: 106322.6 i/s - 90.53x (± 0.00) slower $ ruby -v code/hash/bracket-vs-dup.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Hash[] 520.815k i/100ms - Hash#dup 732.346k i/100ms + Hash[] 605.518k i/100ms + Hash#dup 731.529k i/100ms Calculating ------------------------------------- - Hash[] 7.382M (±12.6%) i/s - 36.457M in 5.048132s - Hash#dup 7.395M (±10.6%) i/s - 36.617M in 5.018705s + Hash[] 7.359M (± 9.9%) i/s - 36.937M in 5.092141s + Hash#dup 7.209M (±11.1%) i/s - 35.845M in 5.043653s Comparison: - Hash#dup: 7394987.2 i/s - Hash[]: 7382208.4 i/s - same-ish: difference falls within error + Hash[]: 7359284.1 i/s + Hash#dup: 7209488.9 i/s - same-ish: difference falls within error $ ruby -v code/hash/bracket-vs-fetch.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Hash#[], symbol 297.654M i/100ms - Hash#fetch, symbol 306.646M i/100ms - Hash#[], string 29.174M i/100ms - Hash#fetch, string 26.764M i/100ms + Hash#[], symbol 298.912M i/100ms + Hash#fetch, symbol 295.712M i/100ms + Hash#[], string 29.199M i/100ms + Hash#fetch, string 26.642M i/100ms Calculating ------------------------------------- - Hash#[], symbol 3.056B (± 4.1%) i/s - 15.478B in 5.072907s - Hash#fetch, symbol 3.098B (± 2.6%) i/s - 15.639B in 5.052206s - Hash#[], string 290.957M (± 1.2%) i/s - 1.459B in 5.014174s - Hash#fetch, string 265.046M (± 2.7%) i/s - 1.338B in 5.052760s + Hash#[], symbol 3.015B (± 2.4%) i/s - 15.245B in 5.059696s + Hash#fetch, symbol 3.029B (± 1.9%) i/s - 15.377B in 5.079104s + Hash#[], string 289.688M (± 2.2%) i/s - 1.460B in 5.042329s + Hash#fetch, string 266.128M (± 1.7%) i/s - 1.332B in 5.006899s Comparison: - Hash#fetch, symbol: 3097674825.3 i/s - Hash#[], symbol: 3056490524.2 i/s - same-ish: difference falls within error - Hash#[], string: 290956666.6 i/s - 10.65x (± 0.00) slower - Hash#fetch, string: 265045721.3 i/s - 11.69x (± 0.00) slower + Hash#fetch, symbol: 3028577843.7 i/s + Hash#[], symbol: 3014750990.3 i/s - same-ish: difference falls within error + Hash#[], string: 289687998.8 i/s - 10.45x (± 0.00) slower + Hash#fetch, string: 266128356.6 i/s - 11.38x (± 0.00) slower $ ruby -v code/hash/dig-vs-[]-vs-fetch.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] -Warming up -------------------------------------- - Hash#dig 91.153M i/100ms - Hash#[] 90.920M i/100ms - Hash#[] || 91.567M i/100ms - Hash#[] && 91.557M i/100ms - Hash#fetch 91.348M i/100ms - Hash#fetch fallback 91.440M i/100ms -Calculating ------------------------------------- - Hash#dig 917.108M (± 0.4%) i/s - 4.649B in 5.069052s - Hash#[] 916.209M (± 1.2%) i/s - 4.637B in 5.061771s - Hash#[] || 911.171M (± 2.0%) i/s - 4.578B in 5.026922s - Hash#[] && 913.231M (± 1.7%) i/s - 4.578B in 5.014293s - Hash#fetch 910.302M (± 2.3%) i/s - 4.567B in 5.020177s - Hash#fetch fallback 914.521M (± 1.7%) i/s - 4.572B in 5.000924s - -Comparison: - Hash#dig: 917108013.3 i/s - Hash#[]: 916209278.8 i/s - same-ish: difference falls within error - Hash#fetch fallback: 914521154.2 i/s - same-ish: difference falls within error - Hash#[] &&: 913231326.8 i/s - same-ish: difference falls within error - Hash#[] ||: 911171128.4 i/s - same-ish: difference falls within error - Hash#fetch: 910301741.5 i/s - same-ish: difference falls within error +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +Warming up -------------------------------------- + Hash#dig 91.345M i/100ms + Hash#[] 90.784M i/100ms + Hash#[] || 91.485M i/100ms + Hash#[] && 91.809M i/100ms + Hash#fetch 91.855M i/100ms + Hash#fetch fallback 91.671M i/100ms +Calculating ------------------------------------- + Hash#dig 914.097M (± 1.8%) i/s - 4.659B in 5.098107s + Hash#[] 916.100M (± 1.0%) i/s - 4.630B in 5.054563s + Hash#[] || 911.353M (± 2.0%) i/s - 4.574B in 5.021246s + Hash#[] && 914.535M (± 1.3%) i/s - 4.590B in 5.020362s + Hash#fetch 908.387M (± 3.2%) i/s - 4.593B in 5.061864s + Hash#fetch fallback 914.243M (± 1.6%) i/s - 4.584B in 5.014934s + +Comparison: + Hash#[]: 916099556.6 i/s + Hash#[] &&: 914535338.7 i/s - same-ish: difference falls within error + Hash#fetch fallback: 914242865.7 i/s - same-ish: difference falls within error + Hash#dig: 914097107.8 i/s - same-ish: difference falls within error + Hash#[] ||: 911353486.7 i/s - same-ish: difference falls within error + Hash#fetch: 908386981.1 i/s - same-ish: difference falls within error $ ruby -v code/hash/fetch-vs-fetch-with-block.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Hash#fetch + const 317.928M i/100ms - Hash#fetch + block 311.275M i/100ms - Hash#fetch + arg 321.106M i/100ms + Hash#fetch + const 300.344M i/100ms + Hash#fetch + block 285.827M i/100ms + Hash#fetch + arg 302.048M i/100ms Calculating ------------------------------------- - Hash#fetch + const 3.156B (± 2.3%) i/s - 15.896B in 5.039619s - Hash#fetch + block 3.168B (± 2.3%) i/s - 15.875B in 5.014432s - Hash#fetch + arg 3.137B (± 2.7%) i/s - 15.734B in 5.018994s + Hash#fetch + const 3.033B (± 1.2%) i/s - 15.318B in 5.051434s + Hash#fetch + block 3.034B (± 1.4%) i/s - 15.435B in 5.087966s + Hash#fetch + arg 3.001B (± 3.2%) i/s - 15.102B in 5.037209s Comparison: - Hash#fetch + block: 3167659557.6 i/s - Hash#fetch + const: 3156029886.7 i/s - same-ish: difference falls within error - Hash#fetch + arg: 3137408047.9 i/s - same-ish: difference falls within error + Hash#fetch + block: 3034141699.7 i/s + Hash#fetch + const: 3032734256.8 i/s - same-ish: difference falls within error + Hash#fetch + arg: 3001390722.9 i/s - same-ish: difference falls within error $ ruby -v code/hash/hash-key-sort_by-vs-sort.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - sort_by + to_h 35.481k i/100ms - sort + to_h 3.348k i/100ms + sort_by + to_h 34.588k i/100ms + sort + to_h 3.008k i/100ms Calculating ------------------------------------- - sort_by + to_h 511.027k (± 8.7%) i/s - 2.555M in 5.054591s - sort + to_h 206.162k (±14.1%) i/s - 991.008k in 5.004957s + sort_by + to_h 499.866k (±10.4%) i/s - 2.490M in 5.057342s + sort + to_h 202.881k (±14.1%) i/s - 977.600k in 5.004153s Comparison: - sort_by + to_h: 511026.9 i/s - sort + to_h: 206162.2 i/s - 2.48x (± 0.00) slower + sort_by + to_h: 499866.3 i/s + sort + to_h: 202881.4 i/s - 2.46x (± 0.00) slower $ ruby -v code/hash/keys-each-vs-each_key.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Hash#keys.each 158.408k i/100ms - Hash#each_key 216.965k i/100ms + Hash#keys.each 216.523k i/100ms + Hash#each_key 207.873k i/100ms Calculating ------------------------------------- - Hash#keys.each 2.013M (±11.1%) i/s - 9.821M in 5.017884s - Hash#each_key 2.144M (± 4.1%) i/s - 10.848M in 5.067342s + Hash#keys.each 2.285M (±11.1%) i/s - 11.259M in 5.057057s + Hash#each_key 2.204M (± 5.4%) i/s - 11.017M in 5.014250s Comparison: - Hash#each_key: 2144459.3 i/s - Hash#keys.each: 2013227.4 i/s - same-ish: difference falls within error + Hash#keys.each: 2284847.5 i/s + Hash#each_key: 2203790.8 i/s - same-ish: difference falls within error $ ruby -v code/hash/keys-include-vs-key.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Hash#keys.include? 284.000 i/100ms - Hash#key? 15.540M i/100ms + Hash#keys.include? 269.000 i/100ms + Hash#key? 3.548M i/100ms Calculating ------------------------------------- - Hash#keys.include? 3.066k (±13.6%) i/s - 15.052k in 5.038034s - Hash#key? 154.629M (± 2.3%) i/s - 777.025M in 5.027882s + Hash#keys.include? 2.947k (±12.1%) i/s - 14.526k in 5.049374s + Hash#key? 35.396M (± 1.0%) i/s - 177.401M in 5.012358s Comparison: - Hash#key?: 154629194.0 i/s - Hash#keys.include?: 3065.8 i/s - 50436.82x (± 0.00) slower + Hash#key?: 35396176.0 i/s + Hash#keys.include?: 2946.9 i/s - 12011.20x (± 0.00) slower $ ruby -v code/hash/merge-bang-vs-[]=.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Hash#merge! 48.164k i/100ms - Hash#[]= 57.629k i/100ms + Hash#merge! 48.845k i/100ms + Hash#[]= 57.095k i/100ms Calculating ------------------------------------- - Hash#merge! 561.204k (± 8.7%) i/s - 2.794M in 5.030647s - Hash#[]= 604.306k (± 6.9%) i/s - 3.054M in 5.078618s + Hash#merge! 582.357k (± 8.2%) i/s - 2.882M in 5.000520s + Hash#[]= 596.189k (± 6.8%) i/s - 3.026M in 5.099672s Comparison: - Hash#[]=: 604305.7 i/s - Hash#merge!: 561203.6 i/s - same-ish: difference falls within error + Hash#[]=: 596188.9 i/s + Hash#merge!: 582357.1 i/s - same-ish: difference falls within error $ ruby -v code/hash/merge-bang-vs-merge-vs-dup-merge-bang.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- {}#merge!(Hash) do end - 37.284k i/100ms - Hash#merge({}) 20.143k i/100ms - Hash#dup#merge!({}) 29.607k i/100ms + 37.898k i/100ms + Hash#merge({}) 19.342k i/100ms + Hash#dup#merge!({}) 31.527k i/100ms Calculating ------------------------------------- {}#merge!(Hash) do end - 388.105k (±10.6%) i/s - 1.939M in 5.064104s - Hash#merge({}) 192.809k (± 9.8%) i/s - 966.864k in 5.066103s - Hash#dup#merge!({}) 313.886k (± 6.8%) i/s - 1.569M in 5.025439s + 385.349k (±10.5%) i/s - 1.933M in 5.080711s + Hash#merge({}) 194.838k (± 9.4%) i/s - 967.100k in 5.025570s + Hash#dup#merge!({}) 308.533k (± 9.5%) i/s - 1.545M in 5.070900s Comparison: -{}#merge!(Hash) do end: 388105.1 i/s - Hash#dup#merge!({}): 313885.7 i/s - 1.24x (± 0.00) slower - Hash#merge({}): 192809.2 i/s - 2.01x (± 0.00) slower +{}#merge!(Hash) do end: 385349.4 i/s + Hash#dup#merge!({}): 308532.7 i/s - 1.25x (± 0.00) slower + Hash#merge({}): 194838.4 i/s - 1.98x (± 0.00) slower $ ruby -v code/hash/merge-vs-double-splat-operator.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Hash#**other 311.181M i/100ms - Hash#merge 308.913M i/100ms + Hash#**other 298.063M i/100ms + Hash#merge 295.024M i/100ms Calculating ------------------------------------- - Hash#**other 3.152B (± 3.4%) i/s - 15.870B in 5.041294s - Hash#merge 3.139B (± 2.8%) i/s - 15.755B in 5.022289s + Hash#**other 3.005B (± 2.8%) i/s - 15.201B in 5.062502s + Hash#merge 3.025B (± 2.6%) i/s - 15.341B in 5.075206s Comparison: - Hash#**other: 3152055819.0 i/s - Hash#merge: 3139409056.6 i/s - same-ish: difference falls within error + Hash#merge: 3024868267.7 i/s + Hash#**other: 3005263459.9 i/s - same-ish: difference falls within error $ ruby -v code/hash/merge-vs-merge-bang.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Hash#merge 1.029k i/100ms - Hash#merge! 58.742k i/100ms + Hash#merge 1.001k i/100ms + Hash#merge! 53.352k i/100ms Calculating ------------------------------------- - Hash#merge 12.412k (±10.8%) i/s - 61.740k in 5.046898s - Hash#merge! 564.454k (± 9.7%) i/s - 2.820M in 5.045858s + Hash#merge 11.516k (±12.4%) i/s - 57.057k in 5.040764s + Hash#merge! 571.379k (± 4.7%) i/s - 2.881M in 5.054058s Comparison: - Hash#merge!: 564453.7 i/s - Hash#merge: 12412.5 i/s - 45.47x (± 0.00) slower + Hash#merge!: 571379.5 i/s + Hash#merge: 11516.3 i/s - 49.61x (± 0.00) slower $ ruby -v code/hash/slice-native-vs-before-native.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- -Hash#native-slice 1.694M i/100ms -Array#each 1.440M i/100ms -Array#each_w/_object 1.394M i/100ms -Hash#select-include 2.414M i/100ms +Hash#native-slice 1.360M i/100ms +Array#each 1.507M i/100ms +Array#each_w/_object 1.459M i/100ms +Hash#select-include 2.365M i/100ms Calculating ------------------------------------- -Hash#native-slice 18.403M (± 7.5%) i/s - 91.470M in 5.009820s -Array#each 15.538M (± 3.6%) i/s - 77.758M in 5.010879s -Array#each_w/_object 14.757M (± 6.5%) i/s - 73.879M in 5.037162s -Hash#select-include 23.996M (± 7.1%) i/s - 120.685M in 5.064023s +Hash#native-slice 18.796M (± 5.3%) i/s - 93.854M in 5.008156s +Array#each 15.551M (± 2.5%) i/s - 78.370M in 5.042730s +Array#each_w/_object 15.135M (± 6.7%) i/s - 75.852M in 5.043685s +Hash#select-include 24.069M (± 6.6%) i/s - 120.590M in 5.041049s Comparison: -Hash#select-include : 23995822.8 i/s -Hash#native-slice : 18402919.9 i/s - 1.30x (± 0.00) slower -Array#each : 15538253.4 i/s - 1.54x (± 0.00) slower -Array#each_w/_object: 14756971.5 i/s - 1.63x (± 0.00) slower +Hash#select-include : 24069160.2 i/s +Hash#native-slice : 18795880.9 i/s - 1.28x (± 0.00) slower +Array#each : 15551359.7 i/s - 1.55x (± 0.00) slower +Array#each_w/_object: 15135236.5 i/s - 1.59x (± 0.00) slower $ ruby -v code/hash/values-include-vs-value.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- -Hash#values.include? 267.000 i/100ms - Hash#value? 662.000 i/100ms +Hash#values.include? 232.000 i/100ms + Hash#value? 660.000 i/100ms Calculating ------------------------------------- -Hash#values.include? 2.969k (±12.1%) i/s - 14.685k in 5.039251s - Hash#value? 6.607k (± 1.0%) i/s - 33.100k in 5.010370s +Hash#values.include? 2.872k (±12.7%) i/s - 14.152k in 5.061611s + Hash#value? 6.564k (± 0.8%) i/s - 33.000k in 5.028068s Comparison: - Hash#value?: 6606.9 i/s -Hash#values.include?: 2968.8 i/s - 2.23x (± 0.00) slower + Hash#value?: 6563.6 i/s +Hash#values.include?: 2872.2 i/s - 2.29x (± 0.00) slower $ ruby -v code/method/call-vs-send-vs-method_missing.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - call 307.648M i/100ms - send 318.273M i/100ms - method_missing 321.087M i/100ms + call 296.927M i/100ms + send 294.890M i/100ms + method_missing 304.125M i/100ms Calculating ------------------------------------- - call 3.169B (± 2.1%) i/s - 15.998B in 5.050909s - send 3.128B (± 2.8%) i/s - 15.914B in 5.092275s - method_missing 3.136B (± 3.1%) i/s - 15.733B in 5.021855s + call 2.994B (± 3.7%) i/s - 15.143B in 5.065483s + send 3.013B (± 2.4%) i/s - 15.334B in 5.092054s + method_missing 3.028B (± 2.8%) i/s - 15.206B in 5.026437s Comparison: - call: 3168803494.1 i/s - method_missing: 3136222289.7 i/s - same-ish: difference falls within error - send: 3127724490.8 i/s - same-ish: difference falls within error + method_missing: 3027766835.7 i/s + send: 3013175647.9 i/s - same-ish: difference falls within error + call: 2994036237.3 i/s - same-ish: difference falls within error $ ruby -v code/proc-and-block/block-vs-to_proc.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Block 58.894k i/100ms - Symbol#to_proc 63.908k i/100ms + Block 61.300k i/100ms + Symbol#to_proc 66.364k i/100ms Calculating ------------------------------------- - Block 679.217k (±13.1%) i/s - 3.357M in 5.036230s - Symbol#to_proc 719.555k (±11.2%) i/s - 3.515M in 5.004576s + Block 704.960k (±12.4%) i/s - 3.494M in 5.046065s + Symbol#to_proc 713.488k (±13.4%) i/s - 3.517M in 5.025781s Comparison: - Symbol#to_proc: 719555.0 i/s - Block: 679217.4 i/s - same-ish: difference falls within error + Symbol#to_proc: 713488.0 i/s + Block: 704960.3 i/s - same-ish: difference falls within error $ ruby -v code/proc-and-block/proc-call-vs-yield.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - block.call 313.456M i/100ms - block + yield 317.225M i/100ms - unused block 292.151M i/100ms - yield 313.008M i/100ms + block.call 300.982M i/100ms + block + yield 314.896M i/100ms + unused block 302.856M i/100ms + yield 296.786M i/100ms Calculating ------------------------------------- - block.call 3.131B (± 3.0%) i/s - 15.673B in 5.010393s - block + yield 3.152B (± 3.0%) i/s - 15.861B in 5.036806s - unused block 3.110B (± 4.6%) i/s - 15.776B in 5.084388s - yield 3.167B (± 2.7%) i/s - 15.963B in 5.045144s + block.call 3.017B (± 2.4%) i/s - 15.350B in 5.091026s + block + yield 3.027B (± 1.8%) i/s - 15.430B in 5.098543s + unused block 3.019B (± 2.6%) i/s - 15.143B in 5.019803s + yield 3.031B (± 0.9%) i/s - 15.433B in 5.091725s Comparison: - yield: 3166570409.7 i/s - block + yield: 3152153764.5 i/s - same-ish: difference falls within error - block.call: 3130907631.8 i/s - same-ish: difference falls within error - unused block: 3110206632.2 i/s - same-ish: difference falls within error + yield: 3031237799.2 i/s + block + yield: 3027330476.9 i/s - same-ish: difference falls within error + unused block: 3018783978.3 i/s - same-ish: difference falls within error + block.call: 3016937610.9 i/s - same-ish: difference falls within error $ ruby -v code/range/cover-vs-include.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - range#cover? 4.492k i/100ms - range#include? 158.000 i/100ms - range#member? 227.000 i/100ms - plain compare 7.500k i/100ms + range#cover? 4.441k i/100ms + range#include? 181.000 i/100ms + range#member? 203.000 i/100ms + plain compare 7.985k i/100ms Calculating ------------------------------------- - range#cover? 53.847k (±31.6%) i/s - 242.568k in 5.178063s - range#include? 2.472k (±33.0%) i/s - 10.744k in 5.060137s - range#member? 2.315k (±27.0%) i/s - 10.669k in 5.205548s - plain compare 84.815k (±27.7%) i/s - 390.000k in 5.167732s + range#cover? 60.409k (±33.1%) i/s - 262.019k in 5.086700s + range#include? 2.832k (±39.9%) i/s - 11.584k in 5.052301s + range#member? 2.480k (±27.5%) i/s - 11.165k in 5.010849s + plain compare 83.510k (±26.9%) i/s - 375.295k in 5.024964s Comparison: - plain compare: 84814.7 i/s - range#cover?: 53846.5 i/s - same-ish: difference falls within error - range#include?: 2472.3 i/s - 34.31x (± 0.00) slower - range#member?: 2315.0 i/s - 36.64x (± 0.00) slower + plain compare: 83509.6 i/s + range#cover?: 60409.3 i/s - same-ish: difference falls within error + range#include?: 2831.6 i/s - 29.49x (± 0.00) slower + range#member?: 2480.1 i/s - 33.67x (± 0.00) slower $ ruby -v code/string/===-vs-=~-vs-match.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - String#match? 32.449M i/100ms - String#=~ 32.111M i/100ms - Regexp#=== 31.748M i/100ms - String#match 31.359M i/100ms + String#match? 34.133M i/100ms + String#=~ 31.946M i/100ms + Regexp#=== 32.051M i/100ms + String#match 31.254M i/100ms Calculating ------------------------------------- - String#match? 343.837M (± 2.2%) i/s - 1.720B in 5.004317s - String#=~ 319.336M (± 1.4%) i/s - 1.606B in 5.028742s - Regexp#=== 317.624M (± 4.0%) i/s - 1.587B in 5.007715s - String#match 312.205M (± 1.8%) i/s - 1.568B in 5.023865s + String#match? 343.237M (± 2.5%) i/s - 1.741B in 5.075069s + String#=~ 320.135M (± 0.8%) i/s - 1.629B in 5.089590s + Regexp#=== 318.087M (± 3.4%) i/s - 1.603B in 5.045617s + String#match 313.731M (± 0.5%) i/s - 1.594B in 5.080761s Comparison: - String#match?: 343837377.1 i/s - String#=~: 319335717.0 i/s - 1.08x (± 0.00) slower - Regexp#===: 317623589.4 i/s - 1.08x (± 0.00) slower - String#match: 312204829.2 i/s - 1.10x (± 0.00) slower + String#match?: 343236981.4 i/s + String#=~: 320134955.0 i/s - 1.07x (± 0.00) slower + Regexp#===: 318086898.0 i/s - 1.08x (± 0.00) slower + String#match: 313730984.2 i/s - 1.09x (± 0.00) slower $ ruby -v code/string/casecmp-vs-downcase-==.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- -String#downcase + == 2.678M i/100ms - String#casecmp 4.207M i/100ms +String#downcase + == 2.644M i/100ms + String#casecmp 4.774M i/100ms Calculating ------------------------------------- -String#downcase + == 29.655M (± 7.7%) i/s - 147.289M in 5.010028s - String#casecmp 46.226M (± 6.2%) i/s - 231.379M in 5.025049s +String#downcase + == 29.851M (± 8.3%) i/s - 148.039M in 5.008338s + String#casecmp 47.277M (± 5.8%) i/s - 238.725M in 5.066499s Comparison: - String#casecmp: 46226000.2 i/s -String#downcase + ==: 29654684.0 i/s - 1.56x (± 0.00) slower + String#casecmp: 47276965.3 i/s +String#downcase + ==: 29850768.7 i/s - 1.58x (± 0.00) slower $ ruby -v code/string/concatenation.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - String#+ 5.950M i/100ms - String#concat 9.157M i/100ms - String#append 9.992M i/100ms - "foo" "bar" 309.012M i/100ms - "#{'foo'}#{'bar'}" 10.267M i/100ms + String#+ 9.792M i/100ms + String#concat 10.580M i/100ms + String#append 10.307M i/100ms + "foo" "bar" 303.694M i/100ms + "#{'foo'}#{'bar'}" 10.820M i/100ms Calculating ------------------------------------- - String#+ 100.767M (± 5.8%) i/s - 505.785M in 5.037730s - String#concat 100.394M (± 4.3%) i/s - 503.631M in 5.026354s - String#append 99.367M (± 6.1%) i/s - 499.624M in 5.050192s - "foo" "bar" 3.115B (± 3.4%) i/s - 15.760B in 5.065526s - "#{'foo'}#{'bar'}" 100.266M (± 4.1%) i/s - 503.062M in 5.025922s + String#+ 106.593M (± 4.3%) i/s - 538.549M in 5.061891s + String#concat 106.993M (± 3.9%) i/s - 539.598M in 5.051088s + String#append 106.439M (± 4.7%) i/s - 535.974M in 5.047450s + "foo" "bar" 3.017B (± 2.7%) i/s - 15.185B in 5.036930s + "#{'foo'}#{'bar'}" 106.704M (± 4.4%) i/s - 541.013M in 5.080981s Comparison: - "foo" "bar": 3115038938.9 i/s - String#+: 100767051.4 i/s - 30.91x (± 0.00) slower - String#concat: 100393871.3 i/s - 31.03x (± 0.00) slower - "#{'foo'}#{'bar'}": 100265878.7 i/s - 31.07x (± 0.00) slower - String#append: 99367119.6 i/s - 31.35x (± 0.00) slower + "foo" "bar": 3016940780.7 i/s + String#concat: 106992994.6 i/s - 28.20x (± 0.00) slower + "#{'foo'}#{'bar'}": 106704401.3 i/s - 28.27x (± 0.00) slower + String#+: 106593146.9 i/s - 28.30x (± 0.00) slower + String#append: 106438801.8 i/s - 28.34x (± 0.00) slower $ ruby -v code/string/dup-vs-unary-plus.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - String#+@ 316.047M i/100ms - String#dup 304.322M i/100ms + String#+@ 301.894M i/100ms + String#dup 304.472M i/100ms Calculating ------------------------------------- - String#+@ 3.176B (± 1.8%) i/s - 16.118B in 5.076512s - String#dup 3.177B (± 2.1%) i/s - 16.129B in 5.078713s + String#+@ 2.997B (± 3.0%) i/s - 15.095B in 5.040783s + String#dup 3.016B (± 2.4%) i/s - 15.224B in 5.049977s Comparison: - String#dup: 3177327371.2 i/s - String#+@: 3176214840.7 i/s - same-ish: difference falls within error + String#dup: 3016453354.7 i/s + String#+@: 2997431945.1 i/s - same-ish: difference falls within error $ ruby -v code/string/end-string-checking-match-vs-end_with.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - String#=~ 796.580k i/100ms - String#match? 1.754M i/100ms - String#end_with? 11.074M i/100ms + String#=~ 1.404M i/100ms + String#match? 1.734M i/100ms + String#end_with? 11.077M i/100ms Calculating ------------------------------------- - String#=~ 14.196M (± 8.4%) i/s - 70.099M in 5.001436s - String#match? 17.456M (± 2.0%) i/s - 87.695M in 5.025983s - String#end_with? 109.861M (± 2.0%) i/s - 553.714M in 5.042265s + String#=~ 14.079M (± 7.7%) i/s - 70.175M in 5.036423s + String#match? 17.323M (± 2.3%) i/s - 86.718M in 5.008778s + String#end_with? 110.261M (± 2.1%) i/s - 553.846M in 5.025557s Comparison: - String#end_with?: 109861392.0 i/s - String#match?: 17456080.0 i/s - 6.29x (± 0.00) slower - String#=~: 14196417.8 i/s - 7.74x (± 0.00) slower + String#end_with?: 110261318.7 i/s + String#match?: 17323302.2 i/s - 6.36x (± 0.00) slower + String#=~: 14079447.9 i/s - 7.83x (± 0.00) slower $ ruby -v code/string/gsub-vs-sub.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - String#gsub 704.198k i/100ms - String#sub 925.835k i/100ms + String#gsub 703.629k i/100ms + String#sub 912.811k i/100ms String#dup["string"]= - 10.347M i/100ms + 10.353M i/100ms Calculating ------------------------------------- - String#gsub 8.221M (±10.1%) i/s - 40.843M in 5.021881s - String#sub 9.906M (± 9.2%) i/s - 49.069M in 5.017567s + String#gsub 8.134M (± 8.9%) i/s - 40.810M in 5.070421s + String#sub 9.628M (±11.8%) i/s - 47.466M in 5.025336s String#dup["string"]= - 102.541M (± 4.0%) i/s - 517.350M in 5.055461s + 102.143M (± 2.0%) i/s - 517.629M in 5.070006s Comparison: -String#dup["string"]=: 102541324.4 i/s - String#sub: 9905941.7 i/s - 10.35x (± 0.00) slower - String#gsub: 8220998.7 i/s - 12.47x (± 0.00) slower +String#dup["string"]=: 102142764.1 i/s + String#sub: 9628403.2 i/s - 10.61x (± 0.00) slower + String#gsub: 8134064.0 i/s - 12.56x (± 0.00) slower $ ruby -v code/string/gsub-vs-tr.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - String#gsub 269.755k i/100ms - String#tr 158.010k i/100ms + String#gsub 342.226k i/100ms + String#tr 176.476k i/100ms Calculating ------------------------------------- - String#gsub 4.320M (± 8.0%) i/s - 21.580M in 5.030725s - String#tr 1.648M (± 4.7%) i/s - 8.375M in 5.092855s + String#gsub 3.924M (± 8.5%) i/s - 19.849M in 5.112192s + String#tr 1.773M (± 4.0%) i/s - 9.000M in 5.086520s Comparison: - String#gsub: 4319895.2 i/s - String#tr: 1648329.5 i/s - 2.62x (± 0.00) slower + String#gsub: 3924476.0 i/s + String#tr: 1772597.7 i/s - 2.21x (± 0.00) slower $ ruby -v code/string/mutable_vs_immutable_strings.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Without Freeze 296.820M i/100ms - With Freeze 319.900M i/100ms + Without Freeze 303.219M i/100ms + With Freeze 292.545M i/100ms Calculating ------------------------------------- - Without Freeze 3.142B (± 2.4%) i/s - 15.731B in 5.009469s - With Freeze 3.145B (± 3.4%) i/s - 15.995B in 5.091839s + Without Freeze 2.992B (± 3.6%) i/s - 15.161B in 5.073903s + With Freeze 3.026B (± 2.1%) i/s - 15.212B in 5.030361s Comparison: - With Freeze: 3145135827.4 i/s - Without Freeze: 3142149936.9 i/s - same-ish: difference falls within error + With Freeze: 3025561810.3 i/s + Without Freeze: 2992285915.1 i/s - same-ish: difference falls within error $ ruby -v code/string/remove-extra-spaces-or-other-chars.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - String#gsub/regex+/ 9.617k i/100ms - String#squeeze 82.656k i/100ms + String#gsub/regex+/ 9.410k i/100ms + String#squeeze 88.587k i/100ms Calculating ------------------------------------- - String#gsub/regex+/ 161.987k (±11.0%) i/s - 798.211k in 5.012363s - String#squeeze 807.738k (± 6.8%) i/s - 4.050M in 5.040517s + String#gsub/regex+/ 167.428k (±10.5%) i/s - 828.080k in 5.027539s + String#squeeze 882.243k (± 4.5%) i/s - 4.429M in 5.031086s Comparison: - String#squeeze: 807738.1 i/s - String#gsub/regex+/: 161986.7 i/s - 4.99x (± 0.00) slower + String#squeeze: 882242.8 i/s + String#gsub/regex+/: 167427.8 i/s - 5.27x (± 0.00) slower $ ruby -v code/string/start-string-checking-match-vs-start_with.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - String#=~ 13.882M i/100ms - String#match? 13.695M i/100ms - String#start_with? 12.835M i/100ms + String#=~ 13.469M i/100ms + String#match? 13.976M i/100ms + String#start_with? 15.225M i/100ms Calculating ------------------------------------- - String#=~ 140.810M (± 4.8%) i/s - 707.960M in 5.040469s - String#match? 138.426M (± 3.0%) i/s - 698.438M in 5.050518s - String#start_with? 127.075M (± 3.4%) i/s - 641.762M in 5.057204s + String#=~ 138.475M (± 7.6%) i/s - 686.912M in 4.999496s + String#match? 138.622M (± 3.0%) i/s - 698.784M in 5.045991s + String#start_with? 152.222M (± 1.7%) i/s - 761.252M in 5.002555s Comparison: - String#=~: 140810445.3 i/s - String#match?: 138426010.1 i/s - same-ish: difference falls within error - String#start_with?: 127074711.2 i/s - 1.11x (± 0.00) slower + String#start_with?: 152222427.1 i/s + String#match?: 138622297.9 i/s - 1.10x (± 0.00) slower + String#=~: 138474765.2 i/s - 1.10x (± 0.00) slower $ ruby -v code/string/start_with-vs-substring-==.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - String#start_with? 179.579k i/100ms - String#[0, n] == 146.142k i/100ms - String#[RANGE] == 225.240k i/100ms - String#[0...n] == 138.438k i/100ms + String#start_with? 64.525k i/100ms + String#[0, n] == 151.072k i/100ms + String#[RANGE] == 223.942k i/100ms + String#[0...n] == 135.297k i/100ms Calculating ------------------------------------- - String#start_with? 6.938M (± 1.5%) i/s - 34.838M in 5.022345s - String#[0, n] == 13.998M (±11.0%) i/s - 68.541M in 5.005985s - String#[RANGE] == 14.831M (±10.1%) i/s - 73.203M in 5.011008s - String#[0...n] == 13.318M (±12.7%) i/s - 64.097M in 4.998646s + String#start_with? 6.943M (± 2.8%) i/s - 34.714M in 5.007339s + String#[0, n] == 13.827M (±11.9%) i/s - 67.529M in 5.008066s + String#[RANGE] == 14.477M (±12.6%) i/s - 70.094M in 5.006078s + String#[0...n] == 13.408M (±12.0%) i/s - 65.484M in 5.007404s Comparison: - String#[RANGE] ==: 14831042.7 i/s - String#[0, n] ==: 13997703.4 i/s - same-ish: difference falls within error - String#[0...n] ==: 13318018.3 i/s - same-ish: difference falls within error - String#start_with?: 6938413.7 i/s - 2.14x (± 0.00) slower + String#[RANGE] ==: 14477117.8 i/s + String#[0, n] ==: 13827333.8 i/s - same-ish: difference falls within error + String#[0...n] ==: 13407985.3 i/s - same-ish: difference falls within error + String#start_with?: 6942988.9 i/s - 2.09x (± 0.00) slower $ ruby -v code/string/sub!-vs-gsub!-vs-[]=.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] -Warming up -------------------------------------- - String#['string']= 10.199M i/100ms - String#sub!'string' 990.093k i/100ms -String#gsub!'string' 784.506k i/100ms - String#[/regexp/]= 9.937M i/100ms - String#sub!/regexp/ 3.121M i/100ms -String#gsub!/regexp/ 921.772k i/100ms -Calculating ------------------------------------- - String#['string']= 103.305M (± 1.2%) i/s - 520.125M in 5.035603s - String#sub!'string' 10.981M (±10.2%) i/s - 54.455M in 5.015115s -String#gsub!'string' 8.512M (± 6.4%) i/s - 42.363M in 5.001170s - String#[/regexp/]= 99.379M (± 3.0%) i/s - 496.842M in 5.004338s - String#sub!/regexp/ 31.361M (± 3.6%) i/s - 159.164M in 5.082206s -String#gsub!/regexp/ 9.293M (±10.0%) i/s - 46.089M in 5.026280s - -Comparison: - String#['string']=: 103304828.8 i/s - String#[/regexp/]=: 99378564.7 i/s - same-ish: difference falls within error - String#sub!/regexp/: 31360976.3 i/s - 3.29x (± 0.00) slower - String#sub!'string': 10980539.1 i/s - 9.41x (± 0.00) slower -String#gsub!/regexp/: 9292582.9 i/s - 11.12x (± 0.00) slower -String#gsub!'string': 8511566.6 i/s - 12.14x (± 0.00) slower +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +Warming up -------------------------------------- + String#['string']= 10.184M i/100ms + String#sub!'string' 838.493k i/100ms +String#gsub!'string' 840.314k i/100ms + String#[/regexp/]= 10.012M i/100ms + String#sub!/regexp/ 1.970M i/100ms +String#gsub!/regexp/ 955.256k i/100ms +Calculating ------------------------------------- + String#['string']= 102.993M (± 2.1%) i/s - 519.372M in 5.045158s + String#sub!'string' 11.198M (± 8.6%) i/s - 56.179M in 5.061096s +String#gsub!'string' 9.089M (±11.1%) i/s - 45.377M in 5.059565s + String#[/regexp/]= 99.860M (± 2.2%) i/s - 500.604M in 5.015960s + String#sub!/regexp/ 32.524M (± 5.2%) i/s - 163.512M in 5.043813s +String#gsub!/regexp/ 9.729M (± 9.9%) i/s - 48.718M in 5.065891s + +Comparison: + String#['string']=: 102992616.6 i/s + String#[/regexp/]=: 99859651.4 i/s - same-ish: difference falls within error + String#sub!/regexp/: 32524420.2 i/s - 3.17x (± 0.00) slower + String#sub!'string': 11198366.1 i/s - 9.20x (± 0.00) slower +String#gsub!/regexp/: 9729396.3 i/s - 10.59x (± 0.00) slower +String#gsub!'string': 9089099.8 i/s - 11.33x (± 0.00) slower $ ruby -v code/string/sub-vs-chomp-vs-delete_suffix.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - String#sub 7.420M i/100ms - String#chomp 5.856M i/100ms -String#delete_suffix 14.239M i/100ms + String#sub 7.615M i/100ms + String#chomp 5.939M i/100ms +String#delete_suffix 13.052M i/100ms Calculating ------------------------------------- - String#sub 87.334M (± 8.9%) i/s - 437.751M in 5.054298s - String#chomp 59.177M (± 1.3%) i/s - 298.675M in 5.048017s -String#delete_suffix 150.689M (± 9.0%) i/s - 754.678M in 5.065283s + String#sub 88.815M (± 9.0%) i/s - 441.663M in 5.017742s + String#chomp 59.117M (± 1.7%) i/s - 296.940M in 5.024487s +String#delete_suffix 150.509M (± 8.9%) i/s - 757.025M in 5.073193s Comparison: -String#delete_suffix: 150689056.6 i/s - String#sub: 87333689.6 i/s - 1.73x (± 0.00) slower - String#chomp: 59176801.6 i/s - 2.55x (± 0.00) slower +String#delete_suffix: 150508956.4 i/s + String#sub: 88814761.4 i/s - 1.69x (± 0.00) slower + String#chomp: 59116538.0 i/s - 2.55x (± 0.00) slower $ ruby -v code/string/sub-vs-delete_prefix.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- -String#delete_prefix 310.615M i/100ms - String#sub 119.461M i/100ms +String#delete_prefix 304.455M i/100ms + String#sub 125.857M i/100ms Calculating ------------------------------------- -String#delete_prefix 3.066B (± 5.2%) i/s - 15.531B in 5.080408s - String#sub 1.274B (± 2.5%) i/s - 6.451B in 5.067867s +String#delete_prefix 3.001B (± 2.6%) i/s - 15.223B in 5.076714s + String#sub 1.281B (± 1.3%) i/s - 6.419B in 5.013334s Comparison: -String#delete_prefix: 3066109039.3 i/s - String#sub: 1273799601.1 i/s - 2.41x (± 0.00) slower +String#delete_prefix: 3000695832.6 i/s + String#sub: 1280572616.9 i/s - 2.34x (± 0.00) slower $ ruby -v code/string/unpack1-vs-unpack[0].rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - String#unpack1 1.559M i/100ms - String#unpack[0] 2.007M i/100ms + String#unpack1 1.588M i/100ms + String#unpack[0] 2.012M i/100ms Calculating ------------------------------------- - String#unpack1 19.624M (± 7.5%) i/s - 98.204M in 5.046877s - String#unpack[0] 19.711M (± 6.6%) i/s - 98.321M in 5.022829s + String#unpack1 19.700M (± 7.4%) i/s - 98.453M in 5.038801s + String#unpack[0] 19.793M (± 6.9%) i/s - 98.581M in 5.015538s Comparison: - String#unpack[0]: 19711330.2 i/s - String#unpack1: 19624293.0 i/s - same-ish: difference falls within error + String#unpack[0]: 19793343.2 i/s + String#unpack1: 19699906.5 i/s - same-ish: difference falls within error $ ruby -v code/time/iso8601-vs-parse.rb -truffleruby 24.2.0-dev-512427a6, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] +truffleruby 24.2.0-dev-7709dbe4, like ruby 3.2.4, GraalVM CE Native [x86_64-linux] Warming up -------------------------------------- - Time.iso8601 20.889k i/100ms - Time.parse 362.000 i/100ms + Time.iso8601 36.148k i/100ms + Time.parse 333.000 i/100ms Calculating ------------------------------------- - Time.iso8601 867.716k (±13.9%) i/s - 4.178M in 5.005658s - Time.parse 5.752k (±19.4%) i/s - 27.512k in 5.023436s + Time.iso8601 842.022k (±25.0%) i/s - 3.868M in 5.019883s + Time.parse 6.140k (±18.9%) i/s - 29.304k in 5.033369s Comparison: - Time.iso8601: 867715.7 i/s - Time.parse: 5751.9 i/s - 150.86x (± 0.00) slower + Time.iso8601: 842022.3 i/s + Time.parse: 6139.9 i/s - 137.14x (± 0.00) slower