Skip to content

Instantly share code, notes, and snippets.

@inkel
Created September 9, 2016 17:30
Show Gist options
  • Save inkel/9c354945a286098c35668b32f54007a7 to your computer and use it in GitHub Desktop.
Save inkel/9c354945a286098c35668b32f54007a7 to your computer and use it in GitHub Desktop.
#! /usr/bin/env ruby
require "benchmark/ips"
class Foo
attr_accessor :params
def perform(params)
self.params = params
valid_signature?
true
end
def valid_signature?
params["timestamp"] && params["signature2"]
end
end
class Bar
def perform(params)
valid_signature?(params["timestamp"], params["signature2"])
true
end
def valid_signature?(timestamp, signature2)
timestamp && signature2
end
end
params = {
"timestamp" => ARGV[0],
"signature2" => ARGV[1],
}
puts "Using parameters: #{params.inspect}"
Benchmark.ips do |r|
foo = Foo.new
bar = Bar.new
r.report("accessors") { foo.perform(params) }
r.report("explicit") { bar.perform(params) }
r.compare!
end
Using parameters: {"timestamp"=>nil, "signature2"=>nil}
Warming up --------------------------------------
accessors 193.376k i/100ms
explicit 205.250k i/100ms
Calculating -------------------------------------
accessors 4.442M (± 4.4%) i/s - 22.238M in 5.017131s
explicit 4.362M (± 3.9%) i/s - 21.962M in 5.044638s
Comparison:
accessors: 4442378.8 i/s
explicit: 4361887.5 i/s - same-ish: difference falls within error
Using parameters: {"timestamp"=>"lorem", "signature2"=>nil}
Warming up --------------------------------------
accessors 188.706k i/100ms
explicit 218.508k i/100ms
Calculating -------------------------------------
accessors 3.466M (± 2.2%) i/s - 17.361M in 5.011467s
explicit 4.358M (± 1.7%) i/s - 21.851M in 5.015159s
Comparison:
explicit: 4358187.6 i/s
accessors: 3466060.5 i/s - 1.26x slower
Using parameters: {"timestamp"=>"lorem", "signature2"=>"ipsum"}
Warming up --------------------------------------
accessors 189.323k i/100ms
explicit 216.360k i/100ms
Calculating -------------------------------------
accessors 3.436M (± 2.3%) i/s - 17.228M in 5.017498s
explicit 4.321M (± 5.2%) i/s - 21.636M in 5.023240s
Comparison:
explicit: 4320834.7 i/s
accessors: 3435674.5 i/s - 1.26x slower
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment