Ruby Benchmark 2.2.3 VS 2.3.0

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 numbers breakdown

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

anúncio