Ruby 2.3.0 foi lançado em 25/12/2015 e eu resolvi fazer um comparativo entre as versões 2.2.3 e a 2.3.0 fazendo um benchmark simples.
Para os testes usei o seguinte código Ruby que peguei neste post
require 'benchmark'
require 'bigdecimal/math'
# calculate pi to 10k digits
puts Benchmark.measure { BigMath.PI(10_000) }
Para entender melhor os resultados de um benchmark veja esta imagem:
Benchmark entre as versões
Ruby 2.2.3
george@george-ubuntu:~/workspace/tests/ruby/benchmark$ ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
george@george-ubuntu:~/workspace/tests/ruby/benchmark$ ruby benchmark.rb
0.390000 0.020000 0.410000 ( 0.417479)
george@george-ubuntu:~/workspace/tests/ruby/benchmark$ ruby benchmark.rb
0.390000 0.020000 0.410000 ( 0.417226)
george@george-ubuntu:~/workspace/tests/ruby/benchmark$ ruby benchmark.rb
0.400000 0.020000 0.420000 ( 0.415458)
george@george-ubuntu:~/workspace/tests/ruby/benchmark$ ruby benchmark.rb
0.400000 0.010000 0.410000 ( 0.417210)
george@george-ubuntu:~/workspace/tests/ruby/benchmark$ ruby benchmark.rb
0.390000 0.020000 0.410000 ( 0.417314)
george@george-ubuntu:~/workspace/tests/ruby/benchmark$
Ruby 2.3.0
george@george-ubuntu:~/workspace/tests/ruby/benchmark$ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
george@george-ubuntu:~/workspace/tests/ruby/benchmark$ ruby benchmark.rb
0.400000 0.020000 0.420000 ( 0.413623)
george@george-ubuntu:~/workspace/tests/ruby/benchmark$ ruby benchmark.rb
0.400000 0.010000 0.410000 ( 0.414394)
george@george-ubuntu:~/workspace/tests/ruby/benchmark$ ruby benchmark.rb
0.390000 0.010000 0.400000 ( 0.414126)
george@george-ubuntu:~/workspace/tests/ruby/benchmark$ ruby benchmark.rb
0.400000 0.010000 0.410000 ( 0.414210)
george@george-ubuntu:~/workspace/tests/ruby/benchmark$ ruby benchmark.rb
0.390000 0.020000 0.410000 ( 0.412233)
george@george-ubuntu:~/workspace/tests/ruby/benchmark$
Interpretando os resultados
A primeira coluna (User CPU Time) é o tempo gasto pela CPU para processar os códigos do usuário, a segunda (System CPU Time) é o tempo gasto pela CPU para processar códigos do Kernel, a terceira coluna é a soma dessas duas métricas e a quarta coluna (Elapsed real time) é o tempo decorrido do início ao término da instrução.
Como puderam ver, a diferença entre as versões é muito pequena, isso comparando o User CPU Time e System CPU Time, porém, quando observamos o tempo real decorrido (Elapsed real time) percebemos que a versão 2.3.0 tem uma vantagem significativa. A tradução disso é que Ruby 2.3.0 executa instruções mais rápido do que a versão 2.2.3, como já era de se esperar ;D