Skip to content

Instantly share code, notes, and snippets.

@headius
Created June 2, 2018 02:49
Show Gist options
  • Save headius/4982be842c5282d6de7e2d018c5cd262 to your computer and use it in GitHub Desktop.
Save headius/4982be842c5282d6de7e2d018c5cd262 to your computer and use it in GitHub Desktop.
[] ~/projects/jruby $ cat blah.rb
require 'benchmark/ips'
Benchmark.ips do |x|
H = {key: :value}.freeze
x.report('keys') {
H.keys.first &&
H.keys.first &&
H.keys.first &&
H.keys.first &&
H.keys.first
}
x.report('each_key') {
H.each_key.first &&
H.each_key.first &&
H.each_key.first &&
H.each_key.first &&
H.each_key.first
}
x.report('first') {
H.first.first &&
H.first.first &&
H.first.first &&
H.first.first &&
H.first.first
}
x.report('flatten') {
H.flatten.first &&
H.flatten.first &&
H.flatten.first &&
H.flatten.first &&
H.flatten.first
}
x.compare!
end
[] ~/projects/jruby $ JAVA_OPTS=$GRAAL jruby -v -Xcompile.invokedynamic -Xfixnum.cache=false blah.rb
jruby 9.2.0.0 (2.5.0) 2018-05-30 d386338 GraalVM 1.0.0-rc1 25.71-b01-internal-jvmci-0.42 on 1.8.0_161-b12 +indy +jit [darwin-x86_64]
Warming up --------------------------------------
keys 184.574k i/100ms
each_key 15.901k i/100ms
first 55.859k i/100ms
flatten 42.019k i/100ms
Calculating -------------------------------------
keys 33.138M (± 5.0%) i/s - 164.824M in 4.991467s
each_key 286.528k (±24.0%) i/s - 763.248k in 5.030546s
first 946.603k (±10.2%) i/s - 4.469M in 5.055190s
flatten 656.361k (± 6.1%) i/s - 3.277M in 5.016448s
Comparison:
keys: 33137700.9 i/s
first: 946602.8 i/s - 35.01x slower
flatten: 656361.3 i/s - 50.49x slower
each_key: 286527.5 i/s - 115.65x slower
[] ~/projects/jruby $ /Library/Java/JavaVirtualMachines/graalvm/Contents/Home/bin/ruby -v blah.rb
truffleruby 1.0.0-rc1, like ruby 2.3.7 <native build with Graal> [x86_64-darwin]
Warming up --------------------------------------
keys 961.330k i/100ms
each_key 23.504k i/100ms
first 800.983k i/100ms
flatten 55.507k i/100ms
Calculating -------------------------------------
keys 8.535M (±40.1%) i/s - 36.531M in 5.028190s
each_key 333.279k (±31.5%) i/s - 1.434M in 5.108025s
first 58.686M (± 9.3%) i/s - 248.305M in 5.002389s
flatten 1.027M (±33.4%) i/s - 4.219M in 5.034057s
Comparison:
first: 58685913.4 i/s
keys: 8534539.3 i/s - 6.88x slower
flatten: 1027289.6 i/s - 57.13x slower
each_key: 333279.2 i/s - 176.09x slower
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment