From f4485d44ecb8e9efb8ce2eb5e5698b4b98519126 Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 15 Jan 2024 13:48:34 +0000 Subject: [PATCH] Add changes --- ruby-3.1.4.fastruby | 932 ++++++++++++++++++++++---------------------- 1 file changed, 466 insertions(+), 466 deletions(-) diff --git a/ruby-3.1.4.fastruby b/ruby-3.1.4.fastruby index bcdea2d..7102d20 100644 --- a/ruby-3.1.4.fastruby +++ b/ruby-3.1.4.fastruby @@ -2,142 +2,142 @@ $ ruby -v code/general/array-argument-vs-splat-arguments.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- Function with single Array argument - 759.580k i/100ms + 764.530k i/100ms Function with splat arguments - 28.526k i/100ms + 20.191k i/100ms Calculating ------------------------------------- Function with single Array argument - 7.558M (± 0.4%) i/s - 37.979M in 5.024822s + 7.689M (± 0.6%) i/s - 38.991M in 5.071370s Function with splat arguments - 231.780k (± 5.5%) i/s - 1.170M in 5.066729s + 216.453k (± 5.5%) i/s - 1.090M in 5.057900s Comparison: -Function with single Array argument: 7558388.5 i/s -Function with splat arguments: 231779.9 i/s - 32.61x (± 0.00) slower +Function with single Array argument: 7688769.5 i/s +Function with splat arguments: 216452.9 i/s - 35.52x (± 0.00) slower $ ruby -v code/general/assignment.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Parallel Assignment 989.272k i/100ms + Parallel Assignment 1.010M i/100ms Sequential Assignment - 1.011M i/100ms + 1.017M i/100ms Calculating ------------------------------------- - Parallel Assignment 9.911M (± 0.6%) i/s - 50.453M in 5.090744s + Parallel Assignment 10.070M (± 0.2%) i/s - 50.499M in 5.014819s Sequential Assignment - 10.132M (± 0.2%) i/s - 51.567M in 5.089298s + 10.136M (± 0.9%) i/s - 50.870M in 5.019192s Comparison: -Sequential Assignment: 10132445.7 i/s - Parallel Assignment: 9911039.9 i/s - 1.02x (± 0.00) slower +Sequential Assignment: 10135884.7 i/s + Parallel Assignment: 10069948.6 i/s - same-ish: difference falls within error $ ruby -v code/general/attr-accessor-vs-getter-and-setter.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - getter_and_setter 469.972k i/100ms - attr_accessor 554.584k i/100ms + getter_and_setter 472.868k i/100ms + attr_accessor 558.091k i/100ms Calculating ------------------------------------- - getter_and_setter 4.675M (± 0.3%) i/s - 23.499M in 5.026216s - attr_accessor 5.570M (± 0.3%) i/s - 28.284M in 5.078248s + getter_and_setter 4.782M (± 0.8%) i/s - 24.116M in 5.043100s + attr_accessor 5.587M (± 1.2%) i/s - 28.463M in 5.094974s Comparison: - attr_accessor: 5569661.8 i/s - getter_and_setter: 4675241.4 i/s - 1.19x (± 0.00) slower + attr_accessor: 5587193.8 i/s + getter_and_setter: 4782366.3 i/s - 1.17x (± 0.00) slower $ ruby -v code/general/begin-rescue-vs-respond-to.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - begin...rescue 88.394k i/100ms - respond_to? 753.226k i/100ms + begin...rescue 89.187k i/100ms + respond_to? 768.662k i/100ms Calculating ------------------------------------- - begin...rescue 883.248k (± 0.5%) i/s - 4.420M in 5.004033s - respond_to? 7.654M (± 0.2%) i/s - 38.415M in 5.018893s + begin...rescue 898.825k (± 1.7%) i/s - 4.549M in 5.061908s + respond_to? 7.697M (± 1.0%) i/s - 39.202M in 5.093636s Comparison: - respond_to?: 7654015.3 i/s - begin...rescue: 883248.1 i/s - 8.67x (± 0.00) slower + respond_to?: 7696926.0 i/s + begin...rescue: 898824.6 i/s - 8.56x (± 0.00) slower $ ruby -v code/general/block-apply-method.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - normal 293.745k i/100ms - &method 119.607k i/100ms + normal 294.514k i/100ms + &method 120.636k i/100ms Calculating ------------------------------------- - normal 2.972M (± 0.4%) i/s - 14.981M in 5.041357s - &method 1.193M (± 0.4%) i/s - 5.980M in 5.014683s + normal 2.966M (± 0.4%) i/s - 15.020M in 5.063853s + &method 1.202M (± 0.3%) i/s - 6.032M in 5.018038s Comparison: - normal: 2971671.8 i/s - &method: 1192587.6 i/s - 2.49x (± 0.00) slower + normal: 2966217.1 i/s + &method: 1202038.4 i/s - 2.47x (± 0.00) slower $ ruby -v code/general/define_method-vs-module-eval.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- module_eval with string - 261.000 i/100ms - define_method 321.000 i/100ms + 242.000 i/100ms + define_method 296.000 i/100ms Calculating ------------------------------------- module_eval with string - 2.285k (±21.0%) i/s - 10.962k in 5.453611s - define_method 3.241k (±19.9%) i/s - 14.766k in 5.049325s + 2.257k (±22.0%) i/s - 10.406k in 5.240303s + define_method 3.247k (±19.9%) i/s - 14.800k in 5.069631s Comparison: - define_method: 3241.0 i/s -module_eval with string: 2285.2 i/s - same-ish: difference falls within error + define_method: 3247.1 i/s +module_eval with string: 2256.9 i/s - same-ish: difference falls within error $ ruby -v code/general/format-vs-round-and-to-s.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Float#round 262.735k i/100ms - Kernel#format 202.526k i/100ms - String#% 175.501k i/100ms + Float#round 259.222k i/100ms + Kernel#format 205.074k i/100ms + String#% 175.081k i/100ms Calculating ------------------------------------- - Float#round 2.647M (± 0.3%) i/s - 13.399M in 5.061327s - Kernel#format 2.040M (± 0.5%) i/s - 10.329M in 5.063473s - String#% 1.763M (± 0.7%) i/s - 8.951M in 5.075808s + Float#round 2.625M (± 0.5%) i/s - 13.220M in 5.036547s + Kernel#format 2.041M (± 0.6%) i/s - 10.254M in 5.023204s + String#% 1.767M (± 1.0%) i/s - 8.929M in 5.054147s Comparison: - Float#round: 2647455.6 i/s - Kernel#format: 2039912.7 i/s - 1.30x (± 0.00) slower - String#%: 1763465.6 i/s - 1.50x (± 0.00) slower + Float#round: 2624948.1 i/s + Kernel#format: 2041337.6 i/s - 1.29x (± 0.00) slower + String#%: 1766859.2 i/s - 1.49x (± 0.00) slower $ ruby -v code/general/hash-vs-openstruct-on-access.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Hash 889.265k i/100ms - OpenStruct 498.429k i/100ms + Hash 890.120k i/100ms + OpenStruct 500.843k i/100ms Calculating ------------------------------------- - Hash 8.910M (± 0.7%) i/s - 45.353M in 5.090304s - OpenStruct 4.982M (± 0.3%) i/s - 24.921M in 5.002375s + Hash 8.814M (± 0.4%) i/s - 44.506M in 5.049595s + OpenStruct 4.943M (± 0.5%) i/s - 25.042M in 5.066586s Comparison: - Hash: 8910045.0 i/s - OpenStruct: 4981977.9 i/s - 1.79x (± 0.00) slower + Hash: 8813896.7 i/s + OpenStruct: 4942735.1 i/s - 1.78x (± 0.00) slower $ ruby -v code/general/hash-vs-openstruct.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Hash 1.087M i/100ms - OpenStruct 11.270k i/100ms + Hash 1.104M i/100ms + OpenStruct 9.325k i/100ms Calculating ------------------------------------- - Hash 11.576M (± 0.4%) i/s - 58.692M in 5.070173s - OpenStruct 112.389k (± 3.4%) i/s - 563.500k in 5.019624s + Hash 11.050M (± 0.3%) i/s - 56.325M in 5.097324s + OpenStruct 92.924k (± 3.2%) i/s - 466.250k in 5.022587s Comparison: - Hash: 11576123.9 i/s - OpenStruct: 112388.9 i/s - 103.00x (± 0.00) slower + Hash: 11050036.1 i/s + OpenStruct: 92923.7 i/s - 118.92x (± 0.00) slower $ ruby -v code/general/inheritance-check.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - less than or equal 576.099k i/100ms - ancestors.include? 124.331k i/100ms + less than or equal 576.011k i/100ms + ancestors.include? 122.985k i/100ms Calculating ------------------------------------- - less than or equal 5.964M (± 0.3%) i/s - 29.957M in 5.022831s - ancestors.include? 1.225M (± 0.4%) i/s - 6.217M in 5.074096s + less than or equal 5.904M (± 1.7%) i/s - 29.953M in 5.074705s + ancestors.include? 1.228M (± 1.5%) i/s - 6.149M in 5.008598s Comparison: - less than or equal: 5964248.3 i/s - ancestors.include?: 1225173.7 i/s - 4.87x (± 0.00) slower + less than or equal: 5904058.4 i/s + ancestors.include?: 1227999.3 i/s - 4.81x (± 0.00) slower $ ruby -v code/general/loop-vs-while-true.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] @@ -145,53 +145,53 @@ Warming up -------------------------------------- While Loop 1.000 i/100ms Kernel loop 1.000 i/100ms Calculating ------------------------------------- - While Loop 0.625 (± 0.0%) i/s - 4.000 in 6.400624s - Kernel loop 0.204 (± 0.0%) i/s - 2.000 in 9.791320s + While Loop 0.671 (± 0.0%) i/s - 4.000 in 5.963711s + Kernel loop 0.214 (± 0.0%) i/s - 2.000 in 9.347658s Comparison: - While Loop: 0.6 i/s - Kernel loop: 0.2 i/s - 3.06x (± 0.00) slower + While Loop: 0.7 i/s + Kernel loop: 0.2 i/s - 3.14x (± 0.00) slower $ ruby -v code/general/raise-vs-e2mmap.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] $ ruby -v code/array/array-first-vs-index.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Array#[0] 1.512M i/100ms - Array#first 1.305M i/100ms + Array#[0] 1.482M i/100ms + Array#first 1.303M i/100ms Calculating ------------------------------------- - Array#[0] 15.031M (± 0.3%) i/s - 75.603M in 5.030018s - Array#first 13.067M (± 0.2%) i/s - 66.575M in 5.094872s + Array#[0] 15.364M (± 1.0%) i/s - 77.080M in 5.017283s + Array#first 13.157M (± 1.2%) i/s - 66.447M in 5.051115s Comparison: - Array#[0]: 15030500.2 i/s - Array#first: 13067086.9 i/s - 1.15x (± 0.00) slower + Array#[0]: 15364326.0 i/s + Array#first: 13156740.1 i/s - 1.17x (± 0.00) slower $ ruby -v code/array/array-last-vs-index.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Array#[-1] 1.510M i/100ms - Array#last 1.291M i/100ms + Array#[-1] 1.555M i/100ms + Array#last 1.340M i/100ms Calculating ------------------------------------- - Array#[-1] 15.015M (± 0.4%) i/s - 75.486M in 5.027289s - Array#last 12.999M (± 0.2%) i/s - 65.862M in 5.066584s + Array#[-1] 15.836M (± 1.6%) i/s - 79.303M in 5.008932s + Array#last 13.468M (± 1.8%) i/s - 68.364M in 5.077598s Comparison: - Array#[-1]: 15015368.0 i/s - Array#last: 12999297.5 i/s - 1.16x (± 0.00) slower + Array#[-1]: 15836335.9 i/s + Array#last: 13468309.5 i/s - 1.18x (± 0.00) slower $ ruby -v code/array/bsearch-vs-find.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- find 1.000 i/100ms - bsearch 91.183k i/100ms + bsearch 96.728k i/100ms Calculating ------------------------------------- - find 0.269 (± 0.0%) i/s - 2.000 in 7.430880s - bsearch 913.775k (± 0.9%) i/s - 4.650M in 5.089612s + find 0.271 (± 0.0%) i/s - 2.000 in 7.366979s + bsearch 966.015k (± 1.5%) i/s - 4.836M in 5.007778s Comparison: - bsearch: 913775.2 i/s - find: 0.3 i/s - 3395074.42x (± 0.00) slower + bsearch: 966015.4 i/s + find: 0.3 i/s - 3558307.68x (± 0.00) slower $ ruby -v code/array/insert-vs-unshift.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] @@ -199,724 +199,724 @@ Warming up -------------------------------------- Array#unshift 18.000 i/100ms Array#insert 1.000 i/100ms Calculating ------------------------------------- - Array#unshift 189.782 (± 2.1%) i/s - 954.000 in 5.029622s - Array#insert 1.440 (± 0.0%) i/s - 8.000 in 5.555685s + Array#unshift 191.211 (± 2.1%) i/s - 972.000 in 5.086125s + Array#insert 1.442 (± 0.0%) i/s - 8.000 in 5.549345s Comparison: - Array#unshift: 189.8 i/s - Array#insert: 1.4 i/s - 131.79x (± 0.00) slower + Array#unshift: 191.2 i/s + Array#insert: 1.4 i/s - 132.62x (± 0.00) slower $ ruby -v code/array/length-vs-size-vs-count.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Array#length 2.119M i/100ms - Array#size 2.123M i/100ms - Array#count 1.620M i/100ms + Array#length 2.132M i/100ms + Array#size 2.119M i/100ms + Array#count 1.631M i/100ms Calculating ------------------------------------- - Array#length 21.226M (± 0.6%) i/s - 108.065M in 5.091263s - Array#size 21.184M (± 0.3%) i/s - 106.139M in 5.010308s - Array#count 16.224M (± 1.1%) i/s - 82.608M in 5.092426s + Array#length 21.336M (± 1.0%) i/s - 108.712M in 5.095778s + Array#size 21.236M (± 0.8%) i/s - 108.068M in 5.089325s + Array#count 16.337M (± 0.2%) i/s - 83.174M in 5.091054s Comparison: - Array#length: 21226285.6 i/s - Array#size: 21184388.4 i/s - same-ish: difference falls within error - Array#count: 16223758.3 i/s - 1.31x (± 0.00) slower + Array#length: 21335726.2 i/s + Array#size: 21235670.8 i/s - same-ish: difference falls within error + Array#count: 16337304.1 i/s - 1.31x (± 0.00) slower $ ruby -v code/array/shuffle-first-vs-sample.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Array#shuffle.first 45.153k i/100ms - Array#sample 1.041M i/100ms + Array#shuffle.first 45.043k i/100ms + Array#sample 1.037M i/100ms Calculating ------------------------------------- - Array#shuffle.first 451.371k (± 0.5%) i/s - 2.258M in 5.001877s - Array#sample 10.412M (± 0.3%) i/s - 53.088M in 5.098957s + Array#shuffle.first 453.350k (± 0.9%) i/s - 2.297M in 5.067549s + Array#sample 10.337M (± 0.3%) i/s - 51.840M in 5.015255s Comparison: - Array#sample: 10411607.6 i/s - Array#shuffle.first: 451371.1 i/s - 23.07x (± 0.00) slower + Array#sample: 10336645.3 i/s + Array#shuffle.first: 453349.8 i/s - 22.80x (± 0.00) slower $ ruby -v code/date/iso8601-vs-parse.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Date.iso8601 62.638k i/100ms - Date.parse 31.682k i/100ms + Date.iso8601 64.120k i/100ms + Date.parse 32.108k i/100ms Calculating ------------------------------------- - Date.iso8601 623.057k (± 0.9%) i/s - 3.132M in 5.027099s - Date.parse 315.546k (± 0.7%) i/s - 1.584M in 5.020445s + Date.iso8601 636.320k (± 2.2%) i/s - 3.206M in 5.041171s + Date.parse 319.190k (± 0.5%) i/s - 1.605M in 5.029716s Comparison: - Date.iso8601: 623056.6 i/s - Date.parse: 315545.8 i/s - 1.97x (± 0.00) slower + Date.iso8601: 636319.9 i/s + Date.parse: 319190.3 i/s - 1.99x (± 0.00) slower $ ruby -v code/enumerable/each-push-vs-map.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Array#each + push 18.584k i/100ms - Array#map 25.494k i/100ms + Array#each + push 18.124k i/100ms + Array#map 25.045k i/100ms Calculating ------------------------------------- - Array#each + push 186.024k (± 0.4%) i/s - 947.784k in 5.095048s - Array#map 255.394k (± 0.4%) i/s - 1.300M in 5.091009s + Array#each + push 182.874k (± 1.7%) i/s - 924.324k in 5.055859s + Array#map 252.177k (± 1.2%) i/s - 1.277M in 5.065784s Comparison: - Array#map: 255393.6 i/s - Array#each + push: 186023.8 i/s - 1.37x (± 0.00) slower + Array#map: 252176.9 i/s + Array#each + push: 182874.1 i/s - 1.38x (± 0.00) slower $ ruby -v code/enumerable/each-vs-for-loop.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - For loop 28.766k i/100ms - #each 31.546k i/100ms + For loop 28.899k i/100ms + #each 31.857k i/100ms Calculating ------------------------------------- - For loop 289.057k (± 0.5%) i/s - 1.467M in 5.075476s - #each 315.216k (± 0.8%) i/s - 1.577M in 5.004237s + For loop 294.293k (± 2.0%) i/s - 1.474M in 5.010113s + #each 316.910k (± 1.1%) i/s - 1.593M in 5.026774s Comparison: - #each: 315216.5 i/s - For loop: 289056.6 i/s - 1.09x (± 0.00) slower + #each: 316910.4 i/s + For loop: 294292.7 i/s - 1.08x (± 0.00) slower $ ruby -v code/enumerable/each_with_index-vs-while-loop.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - While Loop 27.579k i/100ms - each_with_index 17.993k i/100ms + While Loop 27.824k i/100ms + each_with_index 18.709k i/100ms Calculating ------------------------------------- - While Loop 275.542k (± 0.1%) i/s - 1.379M in 5.004505s - each_with_index 180.079k (± 0.2%) i/s - 917.643k in 5.095808s + While Loop 278.197k (± 0.2%) i/s - 1.391M in 5.000789s + each_with_index 188.254k (± 0.3%) i/s - 954.159k in 5.068525s Comparison: - While Loop: 275542.1 i/s - each_with_index: 180078.7 i/s - 1.53x (± 0.00) slower + While Loop: 278197.3 i/s + each_with_index: 188253.8 i/s - 1.48x (± 0.00) slower $ ruby -v code/enumerable/inject-symbol-vs-block.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - inject symbol 124.847k i/100ms - inject to_proc 1.757k i/100ms - inject block 1.929k i/100ms + inject symbol 125.384k i/100ms + inject to_proc 1.767k i/100ms + inject block 2.004k i/100ms Calculating ------------------------------------- - inject symbol 1.246M (± 0.7%) i/s - 6.242M in 5.009948s - inject to_proc 17.659k (± 0.3%) i/s - 89.607k in 5.074276s - inject block 19.310k (± 0.3%) i/s - 98.379k in 5.094834s + inject symbol 1.250M (± 0.9%) i/s - 6.269M in 5.016159s + inject to_proc 17.676k (± 0.5%) i/s - 90.117k in 5.098284s + inject block 19.873k (± 0.5%) i/s - 100.200k in 5.042069s Comparison: - inject symbol: 1246055.3 i/s - inject block: 19309.8 i/s - 64.53x (± 0.00) slower - inject to_proc: 17659.2 i/s - 70.56x (± 0.00) slower + inject symbol: 1249893.7 i/s + inject block: 19873.3 i/s - 62.89x (± 0.00) slower + inject to_proc: 17676.3 i/s - 70.71x (± 0.00) slower $ ruby -v code/enumerable/map-flatten-vs-flat_map.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- -Array#map.flatten(1) 7.031k i/100ms - Array#map.flatten 4.201k i/100ms - Array#flat_map 9.012k i/100ms +Array#map.flatten(1) 7.074k i/100ms + Array#map.flatten 4.191k i/100ms + Array#flat_map 8.772k i/100ms Calculating ------------------------------------- -Array#map.flatten(1) 73.126k (± 1.2%) i/s - 365.612k in 5.000455s - Array#map.flatten 42.949k (± 0.4%) i/s - 218.452k in 5.086378s - Array#flat_map 93.944k (± 1.2%) i/s - 477.636k in 5.085101s +Array#map.flatten(1) 72.587k (± 1.2%) i/s - 367.848k in 5.068531s + Array#map.flatten 42.532k (± 1.1%) i/s - 213.741k in 5.026110s + Array#flat_map 91.820k (± 0.5%) i/s - 464.916k in 5.063462s Comparison: - Array#flat_map: 93943.9 i/s -Array#map.flatten(1): 73126.4 i/s - 1.28x (± 0.00) slower - Array#map.flatten: 42949.1 i/s - 2.19x (± 0.00) slower + Array#flat_map: 91820.0 i/s +Array#map.flatten(1): 72586.8 i/s - 1.26x (± 0.00) slower + Array#map.flatten: 42531.8 i/s - 2.16x (± 0.00) slower $ ruby -v code/enumerable/reverse-each-vs-reverse_each.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Array#reverse.each 28.914k i/100ms - Array#reverse_each 30.951k i/100ms + Array#reverse.each 30.540k i/100ms + Array#reverse_each 31.625k i/100ms Calculating ------------------------------------- - Array#reverse.each 289.990k (± 0.2%) i/s - 1.475M in 5.085069s - Array#reverse_each 309.340k (± 0.3%) i/s - 1.548M in 5.002807s + Array#reverse.each 306.988k (± 0.4%) i/s - 1.558M in 5.073680s + Array#reverse_each 316.427k (± 0.4%) i/s - 1.613M in 5.097229s Comparison: - Array#reverse_each: 309339.6 i/s - Array#reverse.each: 289990.2 i/s - 1.07x (± 0.00) slower + Array#reverse_each: 316427.1 i/s + Array#reverse.each: 306988.4 i/s - 1.03x (± 0.00) slower $ ruby -v code/enumerable/select-first-vs-detect.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- Enumerable#select.first - 20.312k i/100ms - Enumerable#detect 82.453k i/100ms + 20.436k i/100ms + Enumerable#detect 83.212k i/100ms Calculating ------------------------------------- Enumerable#select.first - 202.692k (± 0.5%) i/s - 4.062M in 20.042807s - Enumerable#detect 829.995k (± 0.5%) i/s - 16.656M in 20.067464s + 203.887k (± 0.4%) i/s - 4.087M in 20.046758s + Enumerable#detect 837.551k (± 0.9%) i/s - 16.809M in 20.070622s Comparison: - Enumerable#detect: 829995.0 i/s -Enumerable#select.first: 202692.0 i/s - 4.09x (± 0.00) slower + Enumerable#detect: 837550.7 i/s +Enumerable#select.first: 203886.6 i/s - 4.11x (± 0.00) slower $ ruby -v code/enumerable/select-last-vs-reverse-detect.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- Enumerable#reverse.detect - 244.132k i/100ms + 247.056k i/100ms Enumerable#select.last - 18.262k i/100ms + 17.681k i/100ms Calculating ------------------------------------- Enumerable#reverse.detect - 2.440M (± 0.5%) i/s - 12.207M in 5.001901s + 2.437M (± 0.4%) i/s - 12.353M in 5.069459s Enumerable#select.last - 185.107k (± 0.4%) i/s - 931.362k in 5.031541s + 171.509k (± 1.8%) i/s - 866.369k in 5.053349s Comparison: -Enumerable#reverse.detect: 2440464.4 i/s -Enumerable#select.last: 185107.4 i/s - 13.18x (± 0.00) slower +Enumerable#reverse.detect: 2436754.4 i/s +Enumerable#select.last: 171509.3 i/s - 14.21x (± 0.00) slower $ ruby -v code/enumerable/sort-vs-sort_by.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- Enumerable#sort_by (Symbol#to_proc) - 5.129k i/100ms - Enumerable#sort_by 5.049k i/100ms - Enumerable#sort 2.407k i/100ms + 4.955k i/100ms + Enumerable#sort_by 4.753k i/100ms + Enumerable#sort 2.366k i/100ms Calculating ------------------------------------- Enumerable#sort_by (Symbol#to_proc) - 52.237k (± 1.2%) i/s - 261.579k in 5.008277s - Enumerable#sort_by 49.917k (± 1.4%) i/s - 252.450k in 5.058335s - Enumerable#sort 24.066k (± 0.4%) i/s - 120.350k in 5.000911s + 51.267k (± 0.8%) i/s - 257.660k in 5.026202s + Enumerable#sort_by 49.388k (± 0.9%) i/s - 247.156k in 5.004765s + Enumerable#sort 23.631k (± 0.5%) i/s - 118.300k in 5.006166s Comparison: -Enumerable#sort_by (Symbol#to_proc): 52236.7 i/s - Enumerable#sort_by: 49917.3 i/s - 1.05x (± 0.00) slower - Enumerable#sort: 24066.0 i/s - 2.17x (± 0.00) slower +Enumerable#sort_by (Symbol#to_proc): 51266.5 i/s + Enumerable#sort_by: 49387.9 i/s - 1.04x (± 0.00) slower + Enumerable#sort: 23631.5 i/s - 2.17x (± 0.00) slower $ ruby -v code/enumerable/sort_by-first-vs-min_by.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Enumerable#min_by 16.905k i/100ms + Enumerable#min_by 17.343k i/100ms Enumerable#sort_by...first - 8.789k i/100ms + 8.560k i/100ms Calculating ------------------------------------- - Enumerable#min_by 169.672k (± 0.3%) i/s - 862.155k in 5.081373s + Enumerable#min_by 173.381k (± 0.5%) i/s - 867.150k in 5.001546s Enumerable#sort_by...first - 87.330k (± 0.5%) i/s - 439.450k in 5.032226s + 84.824k (± 0.6%) i/s - 428.000k in 5.045934s Comparison: - Enumerable#min_by: 169671.5 i/s -Enumerable#sort_by...first: 87329.8 i/s - 1.94x (± 0.00) slower + Enumerable#min_by: 173380.9 i/s +Enumerable#sort_by...first: 84824.0 i/s - 2.04x (± 0.00) slower $ ruby -v code/hash/bracket-vs-dup.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Hash[] 424.488k i/100ms - Hash#dup 306.375k i/100ms + Hash[] 418.846k i/100ms + Hash#dup 290.571k i/100ms Calculating ------------------------------------- - Hash[] 4.216M (± 1.9%) i/s - 21.224M in 5.036322s - Hash#dup 3.017M (± 0.5%) i/s - 15.319M in 5.076810s + Hash[] 3.739M (± 1.2%) i/s - 18.848M in 5.041045s + Hash#dup 3.080M (± 1.0%) i/s - 15.691M in 5.094397s Comparison: - Hash[]: 4215659.0 i/s - Hash#dup: 3017475.4 i/s - 1.40x (± 0.00) slower + Hash[]: 3739465.1 i/s + Hash#dup: 3080333.0 i/s - 1.21x (± 0.00) slower $ ruby -v code/hash/bracket-vs-fetch.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Hash#[], symbol 1.424M i/100ms - Hash#fetch, symbol 1.170M i/100ms - Hash#[], string 1.242M i/100ms - Hash#fetch, string 775.136k i/100ms + Hash#[], symbol 1.426M i/100ms + Hash#fetch, symbol 1.186M i/100ms + Hash#[], string 1.227M i/100ms + Hash#fetch, string 782.412k i/100ms Calculating ------------------------------------- - Hash#[], symbol 14.247M (± 0.3%) i/s - 72.641M in 5.098700s - Hash#fetch, symbol 11.721M (± 0.3%) i/s - 59.671M in 5.091162s - Hash#[], string 12.324M (± 3.1%) i/s - 62.122M in 5.046496s - Hash#fetch, string 7.760M (± 0.7%) i/s - 39.532M in 5.094868s + Hash#[], symbol 14.450M (± 1.6%) i/s - 72.722M in 5.034002s + Hash#fetch, symbol 11.866M (± 0.8%) i/s - 60.491M in 5.098101s + Hash#[], string 12.336M (± 1.8%) i/s - 62.596M in 5.076124s + Hash#fetch, string 7.730M (± 0.4%) i/s - 39.121M in 5.061087s Comparison: - Hash#[], symbol: 14247181.9 i/s - Hash#[], string: 12324247.3 i/s - 1.16x (± 0.00) slower - Hash#fetch, symbol: 11720523.9 i/s - 1.22x (± 0.00) slower - Hash#fetch, string: 7759538.8 i/s - 1.84x (± 0.00) slower + Hash#[], symbol: 14449557.4 i/s + Hash#[], string: 12335853.4 i/s - 1.17x (± 0.00) slower + Hash#fetch, symbol: 11866245.0 i/s - 1.22x (± 0.00) slower + Hash#fetch, string: 7729804.6 i/s - 1.87x (± 0.00) slower $ ruby -v code/hash/dig-vs-[]-vs-fetch.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Hash#dig 877.782k i/100ms - Hash#[] 1.016M i/100ms - Hash#[] || 954.039k i/100ms - Hash#[] && 385.148k i/100ms - Hash#fetch 612.675k i/100ms - Hash#fetch fallback 387.394k i/100ms + Hash#dig 858.667k i/100ms + Hash#[] 967.653k i/100ms + Hash#[] || 872.089k i/100ms + Hash#[] && 421.639k i/100ms + Hash#fetch 601.871k i/100ms + Hash#fetch fallback 386.418k i/100ms Calculating ------------------------------------- - Hash#dig 8.991M (± 1.0%) i/s - 45.645M in 5.077232s - Hash#[] 9.787M (± 0.9%) i/s - 49.765M in 5.085442s - Hash#[] || 8.711M (± 1.8%) i/s - 43.886M in 5.039552s - Hash#[] && 4.027M (± 0.9%) i/s - 20.413M in 5.068981s - Hash#fetch 6.001M (± 1.3%) i/s - 30.021M in 5.003230s - Hash#fetch fallback 3.915M (± 1.1%) i/s - 19.757M in 5.046981s + Hash#dig 8.969M (± 0.9%) i/s - 45.509M in 5.074657s + Hash#[] 10.011M (± 0.8%) i/s - 50.318M in 5.026434s + Hash#[] || 8.637M (± 0.5%) i/s - 43.604M in 5.048917s + Hash#[] && 3.629M (± 1.0%) i/s - 18.552M in 5.112956s + Hash#fetch 6.159M (± 1.1%) i/s - 31.297M in 5.081928s + Hash#fetch fallback 3.923M (± 0.9%) i/s - 19.707M in 5.023767s Comparison: - Hash#[]: 9786511.8 i/s - Hash#dig: 8991053.9 i/s - 1.09x (± 0.00) slower - Hash#[] ||: 8711038.7 i/s - 1.12x (± 0.00) slower - Hash#fetch: 6001283.7 i/s - 1.63x (± 0.00) slower - Hash#[] &&: 4027341.9 i/s - 2.43x (± 0.00) slower - Hash#fetch fallback: 3915070.4 i/s - 2.50x (± 0.00) slower + Hash#[]: 10011255.7 i/s + Hash#dig: 8968811.9 i/s - 1.12x (± 0.00) slower + Hash#[] ||: 8636627.3 i/s - 1.16x (± 0.00) slower + Hash#fetch: 6159260.8 i/s - 1.63x (± 0.00) slower + Hash#fetch fallback: 3923141.3 i/s - 2.55x (± 0.00) slower + Hash#[] &&: 3628774.2 i/s - 2.76x (± 0.00) slower $ ruby -v code/hash/fetch-vs-fetch-with-block.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Hash#fetch + const 1.459M i/100ms - Hash#fetch + block 1.457M i/100ms - Hash#fetch + arg 1.091M i/100ms + Hash#fetch + const 1.432M i/100ms + Hash#fetch + block 1.455M i/100ms + Hash#fetch + arg 1.075M i/100ms Calculating ------------------------------------- - Hash#fetch + const 14.581M (± 0.4%) i/s - 72.939M in 5.002510s - Hash#fetch + block 14.448M (± 0.5%) i/s - 72.848M in 5.042308s - Hash#fetch + arg 10.908M (± 0.3%) i/s - 54.567M in 5.002375s + Hash#fetch + const 14.365M (± 0.6%) i/s - 73.007M in 5.082360s + Hash#fetch + block 14.547M (± 1.1%) i/s - 72.729M in 5.000136s + Hash#fetch + arg 10.788M (± 0.8%) i/s - 54.838M in 5.083447s Comparison: - Hash#fetch + const: 14580676.8 i/s - Hash#fetch + block: 14447834.4 i/s - same-ish: difference falls within error - Hash#fetch + arg: 10908317.7 i/s - 1.34x (± 0.00) slower + Hash#fetch + block: 14547120.6 i/s + Hash#fetch + const: 14365315.7 i/s - same-ish: difference falls within error + Hash#fetch + arg: 10788206.1 i/s - 1.35x (± 0.00) slower $ ruby -v code/hash/hash-key-sort_by-vs-sort.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - sort_by + to_h 28.225k i/100ms - sort + to_h 12.588k i/100ms + sort_by + to_h 27.562k i/100ms + sort + to_h 11.757k i/100ms Calculating ------------------------------------- - sort_by + to_h 282.147k (± 0.6%) i/s - 1.411M in 5.002012s - sort + to_h 126.985k (± 0.5%) i/s - 641.988k in 5.055743s + sort_by + to_h 276.595k (± 1.1%) i/s - 1.406M in 5.082574s + sort + to_h 114.183k (± 2.3%) i/s - 576.093k in 5.048291s Comparison: - sort_by + to_h: 282147.0 i/s - sort + to_h: 126985.2 i/s - 2.22x (± 0.00) slower + sort_by + to_h: 276595.3 i/s + sort + to_h: 114182.9 i/s - 2.42x (± 0.00) slower $ ruby -v code/hash/keys-each-vs-each_key.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Hash#keys.each 186.264k i/100ms - Hash#each_key 196.464k i/100ms + Hash#keys.each 185.420k i/100ms + Hash#each_key 195.699k i/100ms Calculating ------------------------------------- - Hash#keys.each 1.901M (± 0.6%) i/s - 9.686M in 5.096338s - Hash#each_key 1.951M (± 1.1%) i/s - 9.823M in 5.034460s + Hash#keys.each 1.881M (± 0.6%) i/s - 9.456M in 5.026656s + Hash#each_key 1.937M (± 0.9%) i/s - 9.785M in 5.051921s Comparison: - Hash#each_key: 1951438.6 i/s - Hash#keys.each: 1900591.3 i/s - 1.03x (± 0.00) slower + Hash#each_key: 1937030.9 i/s + Hash#keys.each: 1881319.5 i/s - 1.03x (± 0.00) slower $ ruby -v code/hash/keys-include-vs-key.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Hash#keys.include? 1.284k i/100ms - Hash#key? 1.016M i/100ms + Hash#keys.include? 2.557k i/100ms + Hash#key? 939.025k i/100ms Calculating ------------------------------------- - Hash#keys.include? 12.708k (± 4.2%) i/s - 64.200k in 5.062318s - Hash#key? 10.194M (± 0.3%) i/s - 51.806M in 5.081764s + Hash#keys.include? 25.158k (± 4.7%) i/s - 127.850k in 5.096875s + Hash#key? 9.402M (± 0.2%) i/s - 47.890M in 5.093784s Comparison: - Hash#key?: 10194489.9 i/s - Hash#keys.include?: 12708.1 i/s - 802.20x (± 0.00) slower + Hash#key?: 9401767.0 i/s + Hash#keys.include?: 25158.4 i/s - 373.70x (± 0.00) slower $ ruby -v code/hash/merge-bang-vs-[]=.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Hash#merge! 4.169k i/100ms - Hash#[]= 10.126k i/100ms + Hash#merge! 4.145k i/100ms + Hash#[]= 10.026k i/100ms Calculating ------------------------------------- - Hash#merge! 41.715k (± 0.4%) i/s - 212.619k in 5.097075s - Hash#[]= 102.024k (± 0.8%) i/s - 516.426k in 5.062146s + Hash#merge! 40.979k (± 0.4%) i/s - 207.250k in 5.057580s + Hash#[]= 100.647k (± 0.9%) i/s - 511.326k in 5.080807s Comparison: - Hash#[]=: 102024.4 i/s - Hash#merge!: 41714.8 i/s - 2.45x (± 0.00) slower + Hash#[]=: 100646.6 i/s + Hash#merge!: 40978.9 i/s - 2.46x (± 0.00) slower $ ruby -v code/hash/merge-bang-vs-merge-vs-dup-merge-bang.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- {}#merge!(Hash) do end - 5.160k i/100ms - Hash#merge({}) 4.167k i/100ms - Hash#dup#merge!({}) 2.731k i/100ms + 5.240k i/100ms + Hash#merge({}) 4.197k i/100ms + Hash#dup#merge!({}) 2.759k i/100ms Calculating ------------------------------------- {}#merge!(Hash) do end - 51.905k (± 0.3%) i/s - 263.160k in 5.070121s - Hash#merge({}) 41.426k (± 0.5%) i/s - 208.350k in 5.029525s - Hash#dup#merge!({}) 27.345k (± 0.8%) i/s - 139.281k in 5.093848s + 52.301k (± 0.8%) i/s - 262.000k in 5.009818s + Hash#merge({}) 41.448k (± 2.2%) i/s - 209.850k in 5.065673s + Hash#dup#merge!({}) 27.335k (± 0.6%) i/s - 137.950k in 5.046767s Comparison: -{}#merge!(Hash) do end: 51904.6 i/s - Hash#merge({}): 41426.3 i/s - 1.25x (± 0.00) slower - Hash#dup#merge!({}): 27344.7 i/s - 1.90x (± 0.00) slower +{}#merge!(Hash) do end: 52300.7 i/s + Hash#merge({}): 41448.4 i/s - 1.26x (± 0.00) slower + Hash#dup#merge!({}): 27335.2 i/s - 1.91x (± 0.00) slower $ ruby -v code/hash/merge-vs-double-splat-operator.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Hash#**other 394.323k i/100ms - Hash#merge 366.625k i/100ms + Hash#**other 393.817k i/100ms + Hash#merge 362.408k i/100ms Calculating ------------------------------------- - Hash#**other 4.005M (± 0.5%) i/s - 20.110M in 5.021477s - Hash#merge 3.660M (± 0.4%) i/s - 18.331M in 5.009062s + Hash#**other 3.976M (± 0.7%) i/s - 20.085M in 5.052318s + Hash#merge 3.667M (± 0.9%) i/s - 18.483M in 5.040115s Comparison: - Hash#**other: 4004992.4 i/s - Hash#merge: 3659670.3 i/s - 1.09x (± 0.00) slower + Hash#**other: 3975560.6 i/s + Hash#merge: 3667455.4 i/s - 1.08x (± 0.00) slower $ ruby -v code/hash/merge-vs-merge-bang.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Hash#merge 1.695k i/100ms - Hash#merge! 4.046k i/100ms + Hash#merge 1.682k i/100ms + Hash#merge! 4.103k i/100ms Calculating ------------------------------------- - Hash#merge 16.806k (± 0.8%) i/s - 84.750k in 5.043188s - Hash#merge! 40.742k (± 0.5%) i/s - 206.346k in 5.064830s + Hash#merge 16.303k (± 2.0%) i/s - 82.418k in 5.057450s + Hash#merge! 40.842k (± 1.8%) i/s - 205.150k in 5.024868s Comparison: - Hash#merge!: 40742.2 i/s - Hash#merge: 16805.9 i/s - 2.42x (± 0.00) slower + Hash#merge!: 40841.5 i/s + Hash#merge: 16302.9 i/s - 2.51x (± 0.00) slower $ ruby -v code/hash/slice-native-vs-before-native.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- -Hash#native-slice 424.547k i/100ms -Array#each 231.861k i/100ms -Array#each_w/_object 173.319k i/100ms -Hash#select-include 78.443k i/100ms +Hash#native-slice 429.039k i/100ms +Array#each 231.858k i/100ms +Array#each_w/_object 174.719k i/100ms +Hash#select-include 79.127k i/100ms Calculating ------------------------------------- -Hash#native-slice 4.319M (± 0.5%) i/s - 21.652M in 5.013272s -Array#each 2.348M (± 0.7%) i/s - 11.825M in 5.036186s -Array#each_w/_object 1.720M (± 0.3%) i/s - 8.666M in 5.037036s -Hash#select-include 789.012k (± 0.6%) i/s - 4.001M in 5.070582s +Hash#native-slice 4.252M (± 1.9%) i/s - 21.452M in 5.047374s +Array#each 2.278M (± 1.4%) i/s - 11.593M in 5.090482s +Array#each_w/_object 1.730M (± 0.7%) i/s - 8.736M in 5.051239s +Hash#select-include 765.306k (± 2.0%) i/s - 3.877M in 5.068367s Comparison: -Hash#native-slice : 4319040.9 i/s -Array#each : 2348121.5 i/s - 1.84x (± 0.00) slower -Array#each_w/_object: 1720463.3 i/s - 2.51x (± 0.00) slower -Hash#select-include : 789012.1 i/s - 5.47x (± 0.00) slower +Hash#native-slice : 4251854.2 i/s +Array#each : 2277817.7 i/s - 1.87x (± 0.00) slower +Array#each_w/_object: 1729549.8 i/s - 2.46x (± 0.00) slower +Hash#select-include : 765306.4 i/s - 5.56x (± 0.00) slower $ ruby -v code/hash/values-include-vs-value.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- -Hash#values.include? 5.846k i/100ms - Hash#value? 7.303k i/100ms +Hash#values.include? 1.386k i/100ms + Hash#value? 1.088k i/100ms Calculating ------------------------------------- -Hash#values.include? 58.160k (± 5.2%) i/s - 292.300k in 5.047347s - Hash#value? 71.591k (± 2.5%) i/s - 365.150k in 5.103694s +Hash#values.include? 13.524k (± 4.4%) i/s - 67.914k in 5.033504s + Hash#value? 10.872k (± 0.5%) i/s - 54.400k in 5.003645s Comparison: - Hash#value?: 71591.1 i/s -Hash#values.include?: 58160.3 i/s - 1.23x (± 0.00) slower +Hash#values.include?: 13523.9 i/s + Hash#value?: 10872.4 i/s - 1.24x (± 0.00) slower $ ruby -v code/method/call-vs-send-vs-method_missing.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - call 665.399k i/100ms - send 496.565k i/100ms - method_missing 384.771k i/100ms + call 662.936k i/100ms + send 501.182k i/100ms + method_missing 384.247k i/100ms Calculating ------------------------------------- - call 6.668M (± 0.3%) i/s - 33.935M in 5.089362s - send 5.018M (± 0.9%) i/s - 25.325M in 5.046791s - method_missing 3.830M (± 0.6%) i/s - 19.239M in 5.022902s + call 6.669M (± 0.8%) i/s - 33.810M in 5.069946s + send 5.010M (± 0.9%) i/s - 25.059M in 5.002639s + method_missing 3.864M (± 0.4%) i/s - 19.597M in 5.071502s Comparison: - call: 6667963.5 i/s - send: 5018413.8 i/s - 1.33x (± 0.00) slower - method_missing: 3830332.5 i/s - 1.74x (± 0.00) slower + call: 6669089.0 i/s + send: 5009557.3 i/s - 1.33x (± 0.00) slower + method_missing: 3864138.7 i/s - 1.73x (± 0.00) slower $ ruby -v code/proc-and-block/block-vs-to_proc.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Block 8.742k i/100ms - Symbol#to_proc 9.311k i/100ms + Block 8.527k i/100ms + Symbol#to_proc 9.267k i/100ms Calculating ------------------------------------- - Block 86.651k (± 0.3%) i/s - 437.100k in 5.044431s - Symbol#to_proc 92.889k (± 0.3%) i/s - 465.550k in 5.011974s + Block 85.854k (± 0.3%) i/s - 434.877k in 5.065345s + Symbol#to_proc 92.863k (± 0.4%) i/s - 472.617k in 5.089461s Comparison: - Symbol#to_proc: 92888.6 i/s - Block: 86650.8 i/s - 1.07x (± 0.00) slower + Symbol#to_proc: 92863.3 i/s + Block: 85854.3 i/s - 1.08x (± 0.00) slower $ ruby -v code/proc-and-block/proc-call-vs-yield.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - block.call 925.605k i/100ms - block + yield 964.592k i/100ms - unused block 1.278M i/100ms - yield 1.172M i/100ms + block.call 934.987k i/100ms + block + yield 980.772k i/100ms + unused block 1.306M i/100ms + yield 1.169M i/100ms Calculating ------------------------------------- - block.call 9.245M (± 0.3%) i/s - 46.280M in 5.006235s - block + yield 9.691M (± 0.3%) i/s - 49.194M in 5.076191s - unused block 12.835M (± 0.2%) i/s - 65.189M in 5.078796s - yield 11.567M (± 0.3%) i/s - 58.591M in 5.065443s + block.call 9.347M (± 0.4%) i/s - 46.749M in 5.001618s + block + yield 9.793M (± 0.3%) i/s - 49.039M in 5.007450s + unused block 13.076M (± 0.3%) i/s - 66.616M in 5.094392s + yield 11.679M (± 0.4%) i/s - 58.454M in 5.004988s Comparison: - unused block: 12835479.8 i/s - yield: 11566931.9 i/s - 1.11x (± 0.00) slower - block + yield: 9691251.7 i/s - 1.32x (± 0.00) slower - block.call: 9244584.6 i/s - 1.39x (± 0.00) slower + unused block: 13076499.8 i/s + yield: 11679192.7 i/s - 1.12x (± 0.00) slower + block + yield: 9793236.6 i/s - 1.34x (± 0.00) slower + block.call: 9346974.3 i/s - 1.40x (± 0.00) slower $ ruby -v code/range/cover-vs-include.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - range#cover? 321.234k i/100ms - range#include? 12.746k i/100ms - range#member? 12.714k i/100ms - plain compare 528.693k i/100ms + range#cover? 311.490k i/100ms + range#include? 12.669k i/100ms + range#member? 12.701k i/100ms + plain compare 525.506k i/100ms Calculating ------------------------------------- - range#cover? 3.189M (± 0.8%) i/s - 16.062M in 5.036712s - range#include? 129.495k (± 0.5%) i/s - 650.046k in 5.019963s - range#member? 129.213k (± 0.3%) i/s - 648.414k in 5.018221s - plain compare 5.299M (± 0.4%) i/s - 26.963M in 5.088002s + range#cover? 3.128M (± 0.3%) i/s - 15.886M in 5.078019s + range#include? 128.617k (± 0.5%) i/s - 646.119k in 5.023701s + range#member? 128.249k (± 1.8%) i/s - 647.751k in 5.052678s + plain compare 5.194M (± 0.5%) i/s - 26.275M in 5.059024s Comparison: - plain compare: 5299487.7 i/s - range#cover?: 3189150.8 i/s - 1.66x (± 0.00) slower - range#include?: 129495.2 i/s - 40.92x (± 0.00) slower - range#member?: 129213.2 i/s - 41.01x (± 0.00) slower + plain compare: 5193878.6 i/s + range#cover?: 3128412.4 i/s - 1.66x (± 0.00) slower + range#include?: 128617.0 i/s - 40.38x (± 0.00) slower + range#member?: 128249.4 i/s - 40.50x (± 0.00) slower $ ruby -v code/string/===-vs-=~-vs-match.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - String#match? 941.234k i/100ms - String#=~ 654.523k i/100ms - Regexp#=== 590.086k i/100ms - String#match 481.101k i/100ms + String#match? 934.633k i/100ms + String#=~ 648.133k i/100ms + Regexp#=== 592.240k i/100ms + String#match 487.508k i/100ms Calculating ------------------------------------- - String#match? 9.411M (± 0.5%) i/s - 47.062M in 5.000601s - String#=~ 6.481M (± 0.4%) i/s - 32.726M in 5.049565s - Regexp#=== 5.916M (± 0.5%) i/s - 30.094M in 5.087233s - String#match 4.801M (± 0.5%) i/s - 24.055M in 5.010085s + String#match? 9.347M (± 0.3%) i/s - 47.666M in 5.099428s + String#=~ 6.543M (± 0.7%) i/s - 33.055M in 5.051926s + Regexp#=== 6.020M (± 1.2%) i/s - 30.204M in 5.018057s + String#match 4.866M (± 0.4%) i/s - 24.375M in 5.009863s Comparison: - String#match?: 9411465.0 i/s - String#=~: 6481114.9 i/s - 1.45x (± 0.00) slower - Regexp#===: 5915822.8 i/s - 1.59x (± 0.00) slower - String#match: 4801436.4 i/s - 1.96x (± 0.00) slower + String#match?: 9347452.4 i/s + String#=~: 6543290.6 i/s - 1.43x (± 0.00) slower + Regexp#===: 6019920.4 i/s - 1.55x (± 0.00) slower + String#match: 4865569.9 i/s - 1.92x (± 0.00) slower $ ruby -v code/string/casecmp-vs-downcase-==.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- -String#downcase + == 654.321k i/100ms - String#casecmp 801.675k i/100ms +String#downcase + == 645.209k i/100ms + String#casecmp 781.426k i/100ms Calculating ------------------------------------- -String#downcase + == 6.531M (± 0.6%) i/s - 32.716M in 5.009474s - String#casecmp 8.028M (± 0.5%) i/s - 40.885M in 5.092918s +String#downcase + == 6.480M (± 1.0%) i/s - 32.906M in 5.078202s + String#casecmp 7.869M (± 1.1%) i/s - 39.853M in 5.064857s Comparison: - String#casecmp: 8028124.6 i/s -String#downcase + ==: 6531053.4 i/s - 1.23x (± 0.00) slower + String#casecmp: 7869456.0 i/s +String#downcase + ==: 6480386.6 i/s - 1.21x (± 0.00) slower $ ruby -v code/string/concatenation.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - String#+ 591.691k i/100ms - String#concat 609.979k i/100ms - String#append 656.346k i/100ms - "foo" "bar" 1.169M i/100ms - "#{'foo'}#{'bar'}" 1.154M i/100ms + String#+ 576.139k i/100ms + String#concat 607.794k i/100ms + String#append 653.420k i/100ms + "foo" "bar" 1.144M i/100ms + "#{'foo'}#{'bar'}" 1.149M i/100ms Calculating ------------------------------------- - String#+ 5.859M (± 4.5%) i/s - 29.585M in 5.064429s - String#concat 6.095M (± 0.3%) i/s - 30.499M in 5.003598s - String#append 6.532M (± 0.3%) i/s - 32.817M in 5.023974s - "foo" "bar" 11.633M (± 0.5%) i/s - 58.433M in 5.023210s - "#{'foo'}#{'bar'}" 11.659M (± 0.3%) i/s - 58.831M in 5.046155s + String#+ 5.860M (± 1.1%) i/s - 29.383M in 5.014415s + String#concat 6.022M (± 1.1%) i/s - 30.390M in 5.046758s + String#append 6.526M (± 5.0%) i/s - 32.671M in 5.024004s + "foo" "bar" 11.437M (± 0.4%) i/s - 57.184M in 5.000111s + "#{'foo'}#{'bar'}" 11.432M (± 0.7%) i/s - 57.467M in 5.026932s Comparison: - "#{'foo'}#{'bar'}": 11658704.8 i/s - "foo" "bar": 11632832.4 i/s - same-ish: difference falls within error - String#append: 6532199.8 i/s - 1.78x (± 0.00) slower - String#concat: 6095468.9 i/s - 1.91x (± 0.00) slower - String#+: 5858860.1 i/s - 1.99x (± 0.00) slower + "foo" "bar": 11436790.3 i/s + "#{'foo'}#{'bar'}": 11432493.8 i/s - same-ish: difference falls within error + String#append: 6526033.6 i/s - 1.75x (± 0.00) slower + String#concat: 6022364.8 i/s - 1.90x (± 0.00) slower + String#+: 5860405.8 i/s - 1.95x (± 0.00) slower $ ruby -v code/string/dup-vs-unary-plus.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - String#+@ 981.809k i/100ms - String#dup 570.120k i/100ms + String#+@ 1.018M i/100ms + String#dup 573.403k i/100ms Calculating ------------------------------------- - String#+@ 9.995M (± 0.3%) i/s - 50.072M in 5.010034s - String#dup 5.640M (± 0.4%) i/s - 28.506M in 5.054258s + String#+@ 10.139M (± 0.7%) i/s - 50.901M in 5.020750s + String#dup 5.743M (± 1.0%) i/s - 29.244M in 5.092150s Comparison: - String#+@: 9994503.9 i/s - String#dup: 5640106.1 i/s - 1.77x (± 0.00) slower + String#+@: 10138570.5 i/s + String#dup: 5743427.7 i/s - 1.77x (± 0.00) slower $ ruby -v code/string/end-string-checking-match-vs-end_with.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - String#=~ 174.097k i/100ms - String#match? 387.038k i/100ms - String#end_with? 600.184k i/100ms + String#=~ 176.748k i/100ms + String#match? 387.710k i/100ms + String#end_with? 616.535k i/100ms Calculating ------------------------------------- - String#=~ 1.735M (± 0.6%) i/s - 8.705M in 5.018796s - String#match? 3.846M (± 0.4%) i/s - 19.352M in 5.032352s - String#end_with? 6.073M (± 0.3%) i/s - 30.609M in 5.040055s + String#=~ 1.762M (± 0.4%) i/s - 8.837M in 5.016705s + String#match? 3.830M (± 0.6%) i/s - 19.386M in 5.062325s + String#end_with? 6.117M (± 0.6%) i/s - 30.827M in 5.039990s Comparison: - String#end_with?: 6073296.8 i/s - String#match?: 3845550.2 i/s - 1.58x (± 0.00) slower - String#=~: 1734515.0 i/s - 3.50x (± 0.00) slower + String#end_with?: 6116632.5 i/s + String#match?: 3829520.8 i/s - 1.60x (± 0.00) slower + String#=~: 1761622.9 i/s - 3.47x (± 0.00) slower $ ruby -v code/string/gsub-vs-sub.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - String#gsub 108.182k i/100ms - String#sub 134.666k i/100ms + String#gsub 107.685k i/100ms + String#sub 132.544k i/100ms String#dup["string"]= - 174.692k i/100ms + 172.802k i/100ms Calculating ------------------------------------- - String#gsub 1.079M (± 0.5%) i/s - 5.409M in 5.012484s - String#sub 1.359M (± 0.6%) i/s - 6.868M in 5.054891s + String#gsub 1.065M (± 0.7%) i/s - 5.384M in 5.055155s + String#sub 1.288M (± 0.5%) i/s - 6.495M in 5.043964s String#dup["string"]= - 1.748M (± 0.8%) i/s - 8.909M in 5.096035s + 1.697M (± 0.6%) i/s - 8.640M in 5.092343s Comparison: -String#dup["string"]=: 1748403.5 i/s - String#sub: 1358721.3 i/s - 1.29x (± 0.00) slower - String#gsub: 1079154.4 i/s - 1.62x (± 0.00) slower +String#dup["string"]=: 1696737.2 i/s + String#sub: 1287638.7 i/s - 1.32x (± 0.00) slower + String#gsub: 1065156.9 i/s - 1.59x (± 0.00) slower $ ruby -v code/string/gsub-vs-tr.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - String#gsub 99.064k i/100ms - String#tr 359.007k i/100ms + String#gsub 101.223k i/100ms + String#tr 352.456k i/100ms Calculating ------------------------------------- - String#gsub 973.569k (± 0.5%) i/s - 4.953M in 5.087815s - String#tr 3.595M (± 0.6%) i/s - 18.309M in 5.093680s + String#gsub 1.020M (± 0.8%) i/s - 5.162M in 5.063187s + String#tr 3.523M (± 1.0%) i/s - 17.623M in 5.003083s Comparison: - String#tr: 3594669.2 i/s - String#gsub: 973569.0 i/s - 3.69x (± 0.00) slower + String#tr: 3522744.6 i/s + String#gsub: 1019661.7 i/s - 3.45x (± 0.00) slower $ ruby -v code/string/mutable_vs_immutable_strings.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Without Freeze 1.160M i/100ms - With Freeze 1.668M i/100ms + Without Freeze 1.146M i/100ms + With Freeze 1.669M i/100ms Calculating ------------------------------------- - Without Freeze 11.561M (± 0.3%) i/s - 57.999M in 5.016835s - With Freeze 16.695M (± 0.4%) i/s - 85.068M in 5.095350s + Without Freeze 11.488M (± 0.8%) i/s - 58.445M in 5.088049s + With Freeze 16.732M (± 0.9%) i/s - 85.123M in 5.087810s Comparison: - With Freeze: 16695465.0 i/s - Without Freeze: 11560992.6 i/s - 1.44x (± 0.00) slower + With Freeze: 16731920.7 i/s + Without Freeze: 11487603.2 i/s - 1.46x (± 0.00) slower $ ruby -v code/string/remove-extra-spaces-or-other-chars.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - String#gsub/regex+/ 3.345k i/100ms - String#squeeze 155.876k i/100ms + String#gsub/regex+/ 3.348k i/100ms + String#squeeze 154.099k i/100ms Calculating ------------------------------------- - String#gsub/regex+/ 33.635k (± 0.3%) i/s - 170.595k in 5.071953s - String#squeeze 1.548M (± 0.7%) i/s - 7.794M in 5.036080s + String#gsub/regex+/ 33.662k (± 0.7%) i/s - 170.748k in 5.072594s + String#squeeze 1.563M (± 1.6%) i/s - 7.859M in 5.029922s Comparison: - String#squeeze: 1547671.5 i/s - String#gsub/regex+/: 33635.2 i/s - 46.01x (± 0.00) slower + String#squeeze: 1562836.4 i/s + String#gsub/regex+/: 33662.3 i/s - 46.43x (± 0.00) slower $ ruby -v code/string/start-string-checking-match-vs-start_with.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - String#=~ 260.214k i/100ms - String#match? 638.173k i/100ms - String#start_with? 873.633k i/100ms + String#=~ 258.322k i/100ms + String#match? 645.303k i/100ms + String#start_with? 882.809k i/100ms Calculating ------------------------------------- - String#=~ 2.598M (± 0.4%) i/s - 13.011M in 5.008967s - String#match? 6.420M (± 0.3%) i/s - 32.547M in 5.069350s - String#start_with? 8.749M (± 0.3%) i/s - 44.555M in 5.092529s + String#=~ 2.604M (± 0.7%) i/s - 13.174M in 5.059804s + String#match? 6.453M (± 0.6%) i/s - 32.265M in 5.000286s + String#start_with? 8.805M (± 0.5%) i/s - 44.140M in 5.013097s Comparison: - String#start_with?: 8749216.7 i/s - String#match?: 6420368.9 i/s - 1.36x (± 0.00) slower - String#=~: 2597514.0 i/s - 3.37x (± 0.00) slower + String#start_with?: 8805210.8 i/s + String#match?: 6452882.5 i/s - 1.36x (± 0.00) slower + String#=~: 2603859.1 i/s - 3.38x (± 0.00) slower $ ruby -v code/string/start_with-vs-substring-==.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - String#start_with? 195.028k i/100ms - String#[0, n] == 85.186k i/100ms - String#[RANGE] == 75.584k i/100ms - String#[0...n] == 46.626k i/100ms + String#start_with? 200.274k i/100ms + String#[0, n] == 83.673k i/100ms + String#[RANGE] == 77.170k i/100ms + String#[0...n] == 47.004k i/100ms Calculating ------------------------------------- - String#start_with? 2.052M (± 1.2%) i/s - 10.336M in 5.038983s - String#[0, n] == 837.973k (± 0.5%) i/s - 4.259M in 5.082986s - String#[RANGE] == 762.676k (± 0.5%) i/s - 3.855M in 5.054434s - String#[0...n] == 468.033k (± 0.7%) i/s - 2.378M in 5.080920s + String#start_with? 2.010M (± 1.0%) i/s - 10.214M in 5.081916s + String#[0, n] == 837.656k (± 0.6%) i/s - 4.267M in 5.094536s + String#[RANGE] == 747.824k (± 0.5%) i/s - 3.781M in 5.056559s + String#[0...n] == 458.472k (± 0.6%) i/s - 2.303M in 5.023805s Comparison: - String#start_with?: 2051571.7 i/s - String#[0, n] ==: 837972.5 i/s - 2.45x (± 0.00) slower - String#[RANGE] ==: 762676.2 i/s - 2.69x (± 0.00) slower - String#[0...n] ==: 468033.0 i/s - 4.38x (± 0.00) slower + String#start_with?: 2010064.8 i/s + String#[0, n] ==: 837655.9 i/s - 2.40x (± 0.00) slower + String#[RANGE] ==: 747824.0 i/s - 2.69x (± 0.00) slower + String#[0...n] ==: 458472.1 i/s - 4.38x (± 0.00) slower $ ruby -v code/string/sub!-vs-gsub!-vs-[]=.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - String#['string']= 176.554k i/100ms - String#sub!'string' 124.820k i/100ms -String#gsub!'string' 75.206k i/100ms - String#[/regexp/]= 146.648k i/100ms - String#sub!/regexp/ 113.651k i/100ms -String#gsub!/regexp/ 58.388k i/100ms + String#['string']= 175.253k i/100ms + String#sub!'string' 127.618k i/100ms +String#gsub!'string' 77.061k i/100ms + String#[/regexp/]= 143.561k i/100ms + String#sub!/regexp/ 110.835k i/100ms +String#gsub!/regexp/ 58.021k i/100ms Calculating ------------------------------------- - String#['string']= 1.747M (± 0.9%) i/s - 8.828M in 5.052662s - String#sub!'string' 1.252M (± 0.4%) i/s - 6.366M in 5.085138s -String#gsub!'string' 760.017k (± 1.0%) i/s - 3.836M in 5.047102s - String#[/regexp/]= 1.465M (± 0.4%) i/s - 7.332M in 5.005277s - String#sub!/regexp/ 1.134M (± 0.3%) i/s - 5.683M in 5.011675s -String#gsub!/regexp/ 582.777k (± 0.5%) i/s - 2.919M in 5.009581s + String#['string']= 1.745M (± 0.7%) i/s - 8.763M in 5.022852s + String#sub!'string' 1.262M (± 0.7%) i/s - 6.381M in 5.057206s +String#gsub!'string' 770.086k (± 1.0%) i/s - 3.853M in 5.003960s + String#[/regexp/]= 1.450M (± 0.4%) i/s - 7.322M in 5.050375s + String#sub!/regexp/ 1.111M (± 0.4%) i/s - 5.653M in 5.088302s +String#gsub!/regexp/ 579.141k (± 0.5%) i/s - 2.901M in 5.009359s Comparison: - String#['string']=: 1747273.8 i/s - String#[/regexp/]=: 1464953.9 i/s - 1.19x (± 0.00) slower - String#sub!'string': 1251865.7 i/s - 1.40x (± 0.00) slower - String#sub!/regexp/: 1133876.5 i/s - 1.54x (± 0.00) slower -String#gsub!'string': 760017.0 i/s - 2.30x (± 0.00) slower -String#gsub!/regexp/: 582776.9 i/s - 3.00x (± 0.00) slower + String#['string']=: 1744645.3 i/s + String#[/regexp/]=: 1449743.3 i/s - 1.20x (± 0.00) slower + String#sub!'string': 1261805.2 i/s - 1.38x (± 0.00) slower + String#sub!/regexp/: 1110916.0 i/s - 1.57x (± 0.00) slower +String#gsub!'string': 770085.9 i/s - 2.27x (± 0.00) slower +String#gsub!/regexp/: 579140.6 i/s - 3.01x (± 0.00) slower $ ruby -v code/string/sub-vs-chomp-vs-delete_suffix.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - String#sub 134.214k i/100ms - String#chomp 543.033k i/100ms -String#delete_suffix 595.209k i/100ms + String#sub 144.987k i/100ms + String#chomp 549.997k i/100ms +String#delete_suffix 591.777k i/100ms Calculating ------------------------------------- - String#sub 1.343M (± 0.2%) i/s - 6.845M in 5.097079s - String#chomp 5.488M (± 0.3%) i/s - 27.695M in 5.046427s -String#delete_suffix 5.958M (± 0.8%) i/s - 30.356M in 5.095045s + String#sub 1.438M (± 0.3%) i/s - 7.249M in 5.042941s + String#chomp 5.441M (± 0.6%) i/s - 27.500M in 5.054415s +String#delete_suffix 5.961M (± 0.3%) i/s - 30.181M in 5.062718s Comparison: -String#delete_suffix: 5958280.4 i/s - String#chomp: 5488016.4 i/s - 1.09x (± 0.00) slower - String#sub: 1342912.8 i/s - 4.44x (± 0.00) slower +String#delete_suffix: 5961417.9 i/s + String#chomp: 5440959.8 i/s - 1.10x (± 0.00) slower + String#sub: 1437539.5 i/s - 4.15x (± 0.00) slower $ ruby -v code/string/sub-vs-delete_prefix.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- -String#delete_prefix 630.585k i/100ms - String#sub 135.989k i/100ms +String#delete_prefix 602.166k i/100ms + String#sub 138.389k i/100ms Calculating ------------------------------------- -String#delete_prefix 6.322M (± 0.5%) i/s - 32.160M in 5.087466s - String#sub 1.369M (± 0.4%) i/s - 6.935M in 5.067963s +String#delete_prefix 6.124M (± 0.4%) i/s - 30.710M in 5.014849s + String#sub 1.375M (± 0.5%) i/s - 6.919M in 5.034256s Comparison: -String#delete_prefix: 6321526.1 i/s - String#sub: 1368513.0 i/s - 4.62x (± 0.00) slower +String#delete_prefix: 6124019.6 i/s + String#sub: 1374505.8 i/s - 4.46x (± 0.00) slower $ ruby -v code/string/unpack1-vs-unpack[0].rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - String#unpack1 602.371k i/100ms - String#unpack[0] 445.922k i/100ms + String#unpack1 604.160k i/100ms + String#unpack[0] 439.672k i/100ms Calculating ------------------------------------- - String#unpack1 6.002M (± 0.4%) i/s - 30.119M in 5.018523s - String#unpack[0] 4.499M (± 0.9%) i/s - 22.742M in 5.055442s + String#unpack1 6.012M (± 0.3%) i/s - 30.208M in 5.024262s + String#unpack[0] 4.420M (± 0.5%) i/s - 22.423M in 5.073057s Comparison: - String#unpack1: 6001566.1 i/s - String#unpack[0]: 4498877.8 i/s - 1.33x (± 0.00) slower + String#unpack1: 6012493.3 i/s + String#unpack[0]: 4420178.9 i/s - 1.36x (± 0.00) slower $ ruby -v code/time/iso8601-vs-parse.rb ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] Warming up -------------------------------------- - Time.iso8601 26.656k i/100ms - Time.parse 9.253k i/100ms + Time.iso8601 27.447k i/100ms + Time.parse 9.356k i/100ms Calculating ------------------------------------- - Time.iso8601 265.843k (± 0.4%) i/s - 1.333M in 5.013569s - Time.parse 92.432k (± 0.9%) i/s - 462.650k in 5.005669s + Time.iso8601 273.928k (± 0.8%) i/s - 1.372M in 5.010226s + Time.parse 93.189k (± 1.6%) i/s - 467.800k in 5.021136s Comparison: - Time.iso8601: 265842.6 i/s - Time.parse: 92432.4 i/s - 2.88x (± 0.00) slower + Time.iso8601: 273928.1 i/s + Time.parse: 93188.8 i/s - 2.94x (± 0.00) slower