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 o 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 quarta coluna (Elapsed real time) é 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, pórem 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ápidas do que a versão 2.2.3, como já era de se esperar ;D