Skip to content

Instantly share code, notes, and snippets.

@urbanautomaton
Last active February 27, 2018 21:21
Show Gist options
  • Save urbanautomaton/13a23e722869cc1aa6508b3eb21e23e8 to your computer and use it in GitHub Desktop.
Save urbanautomaton/13a23e722869cc1aa6508b3eb21e23e8 to your computer and use it in GitHub Desktop.
require 'benchmark/ips'
Benchmark.ips do |x|
x.report('Range#include? (int)') do
(1..10_000).include?(5_000)
end
x.report('Range#cover? (int)') do
(1..10_000).cover?(5_000)
end
x.compare!
end
Benchmark.ips do |x|
x.report('Range#include? (float)') do
(1.0..10_000.0).include?(5_000.0)
end
x.report('Range#cover? (float)') do
(1.0..10_000.0).cover?(5_000.0)
end
x.compare!
end
Benchmark.ips do |x|
x.report('Range#include? (char)') do
('a'..'z').include?('t')
end
x.report('Range#cover? (char)') do
('a'..'z').cover?('t')
end
x.compare!
end
Warming up --------------------------------------
Range#include? (int) 209.927k i/100ms
Range#cover? (int) 209.853k i/100ms
Calculating -------------------------------------
Range#include? (int) 5.389M (± 4.9%) i/s - 27.081M in 5.037657s
Range#cover? (int) 5.433M (± 5.1%) i/s - 27.281M in 5.035485s
Comparison:
Range#cover? (int): 5433041.4 i/s
Range#include? (int): 5389456.7 i/s - same-ish: difference falls within error
Warming up --------------------------------------
Range#include? (float)
163.886k i/100ms
Range#cover? (float) 165.360k i/100ms
Calculating -------------------------------------
Range#include? (float)
3.065M (± 4.2%) i/s - 15.405M in 5.035749s
Range#cover? (float) 2.994M (± 5.7%) i/s - 15.048M in 5.044303s
Comparison:
Range#include? (float): 3064825.4 i/s
Range#cover? (float): 2993613.4 i/s - same-ish: difference falls within error
Warming up --------------------------------------
Range#include? (char)
111.835k i/100ms
Range#cover? (char) 119.642k i/100ms
Calculating -------------------------------------
Range#include? (char)
1.756M (± 3.8%) i/s - 8.835M in 5.040207s
Range#cover? (char) 1.807M (± 4.0%) i/s - 9.093M in 5.040230s
Comparison:
Range#cover? (char): 1807084.4 i/s
Range#include? (char): 1755502.9 i/s - same-ish: difference falls within error
Warming up --------------------------------------
Range#include? (int) 234.743k i/100ms
Range#cover? (int) 234.379k i/100ms
Calculating -------------------------------------
Range#include? (int) 6.136M (± 6.1%) i/s - 30.751M in 5.031265s
Range#cover? (int) 5.993M (± 8.2%) i/s - 29.766M in 5.002374s
Comparison:
Range#include? (int): 6136369.9 i/s
Range#cover? (int): 5993095.9 i/s - same-ish: difference falls within error
Warming up --------------------------------------
Range#include? (float)
183.464k i/100ms
Range#cover? (float) 184.227k i/100ms
Calculating -------------------------------------
Range#include? (float)
3.524M (± 4.4%) i/s - 17.613M in 5.007772s
Range#cover? (float) 3.505M (± 5.6%) i/s - 17.502M in 5.009306s
Comparison:
Range#include? (float): 3524240.5 i/s
Range#cover? (float): 3505428.4 i/s - same-ish: difference falls within error
Warming up --------------------------------------
Range#include? (char)
113.020k i/100ms
Range#cover? (char) 157.424k i/100ms
Calculating -------------------------------------
Range#include? (char)
1.668M (± 5.6%) i/s - 8.363M in 5.033516s
Range#cover? (char) 2.680M (± 6.5%) i/s - 13.381M in 5.015822s
Comparison:
Range#cover? (char): 2680209.3 i/s
Range#include? (char): 1668403.1 i/s - 1.61x slower
Warming up --------------------------------------
Range#include? (int) 227.002k i/100ms
Range#cover? (int) 234.227k i/100ms
Calculating -------------------------------------
Range#include? (int) 5.475M (± 5.9%) i/s - 27.467M in 5.034307s
Range#cover? (int) 5.792M (± 7.0%) i/s - 29.044M in 5.039922s
Comparison:
Range#cover? (int): 5792265.3 i/s
Range#include? (int): 5474703.2 i/s - same-ish: difference falls within error
Warming up --------------------------------------
Range#include? (float)
182.029k i/100ms
Range#cover? (float) 183.699k i/100ms
Calculating -------------------------------------
Range#include? (float)
3.346M (± 4.9%) i/s - 16.747M in 5.017518s
Range#cover? (float) 3.362M (± 7.6%) i/s - 16.717M in 5.008869s
Comparison:
Range#cover? (float): 3361535.6 i/s
Range#include? (float): 3346035.1 i/s - same-ish: difference falls within error
Warming up --------------------------------------
Range#include? (char)
115.652k i/100ms
Range#cover? (char) 153.612k i/100ms
Calculating -------------------------------------
Range#include? (char)
1.617M (± 5.4%) i/s - 8.096M in 5.022434s
Range#cover? (char) 2.532M (± 7.1%) i/s - 12.750M in 5.062508s
Comparison:
Range#cover? (char): 2531771.0 i/s
Range#include? (char): 1616707.6 i/s - 1.57x slower
Warming up --------------------------------------
Range#include? (int) 246.828k i/100ms
Range#cover? (int) 241.401k i/100ms
Calculating -------------------------------------
Range#include? (int) 5.641M (± 6.9%) i/s - 28.138M in 5.015075s
Range#cover? (int) 5.637M (± 5.4%) i/s - 28.244M in 5.025674s
Comparison:
Range#include? (int): 5640813.3 i/s
Range#cover? (int): 5636734.0 i/s - same-ish: difference falls within error
Warming up --------------------------------------
Range#include? (float)
187.707k i/100ms
Range#cover? (float) 184.337k i/100ms
Calculating -------------------------------------
Range#include? (float)
3.512M (± 5.6%) i/s - 17.644M in 5.040436s
Range#cover? (float) 3.513M (± 6.3%) i/s - 17.512M in 5.005115s
Comparison:
Range#cover? (float): 3513243.5 i/s
Range#include? (float): 3512087.8 i/s - same-ish: difference falls within error
Warming up --------------------------------------
Range#include? (char)
114.177k i/100ms
Range#cover? (char) 157.011k i/100ms
Calculating -------------------------------------
Range#include? (char)
1.608M (± 5.1%) i/s - 8.107M in 5.055373s
Range#cover? (char) 2.507M (± 5.1%) i/s - 12.561M in 5.023117s
Comparison:
Range#cover? (char): 2507442.9 i/s
Range#include? (char): 1607761.5 i/s - 1.56x slower
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment