Ruby 1.9 ownando em desempenho!

janeiro 7, 2008 às 5:54 pm | Publicado em Linux | 3 Comentários

Bom, eu soube hoje(apesar de já ter sido há alguns dias), que foi lançado o ruby 1.9, e entre as novidades principais desta versão, está um interpretador de Bytecode! Isso, traduzido em palavras não geeky-ish, significa uma palavra: desempenho!

Então, depois de muito pesquisar sobre ele, resolvi instalar um pacote, que estava no AUR(a nova versão ainda não tá no repositório oficial, vai saber porque), com o novo ruby. Como o pacote instala o ruby 1.9 em um diretório diferente do 1.8.6, resolvi então fazer um “benchmark” básico para comparar a diferença de desempenho :]

A máquina de teste é um Pentium 4 2.8Ghz(não HT) rodando Arch Linux.

Então, eu resolvi primeiramente calar a boca de uns pythonianos(claro que foi melhor, se não nem postava aqui XD). A fórmula escolhida foi a fórmula de Fibonnaci, e os fontes foram esses:

 def fib(n)
if n == 0 || n == 1
n
else
fib(n-1) + fib(n-2)
end
end

36.times do |i|
puts “n=#{i} => #{fib(i)}”
end

Em ruby. E em python:

 def fib(n):
if n == 0 or n == 1:
return n
else:
return fib(n-1) + fib(n-2)

for i in range(36):
print “n=%d => %d” % (i, fib(i))

Então, munido destes códigos, eu parti para o ataque😀 A ferramenta escolhida foi o comando time, que já é padrão do linux, coisa e tal.

E… chegando ao momento que todos esperavam! Eu vou mostrar! Posso mostrar*platéia: pode!*? Ok então, eu vou mostrar, mas só depois dos comerciais.

* Pausa para comerciais * 

Primeiramente, eu testei o Ruby 1.8.6, o que me mostrou o seguinte resultado:

 real    3m36.034s
user    2m40.666s
sys     0m21.735s

Nossa, rápido hein? Quase dormi esperando terminar isso =\
Vamos para o próximo concorrente, o python(em sua versão 2.5.1):

 real    1m13.487s
user    1m4.912s
sys    0m0.813s

Uia, muito melhor, vai ver os pythonianos tavam com razão😛

E então, o teste final, o Ruby 1.9.0:

 real    0m22.808s
user    0m19.229s
sys    0m0.220s

E isso significa… Vitória!O novo ruby foi 3,2 vezes mais rápido que o Python, e 9,5 vezes mais rápido que a versão anterior dele mesmo.

Então, para concluir esse artigo, é uma mostra que pelo menos o desempenho não é mais um motivo tão sério para não se usar ruby, pelo menos em comparação a python.

PS: Aproveitando o clima do post, eu resolvi testar a mesma fórmula, ou pelo menos uma parecida(feita pelo meu amigo jfsantos, do #archlinux.br, e que pode ser encontrado aqui):

 real    0m0.224s
user    0m0.213s
sys    0m0.000s

É, algum dia chegamos lá, não é mesmo?😛
Só para constar, o programa em C foi compilado com as seguintes flags:
-O3 -march=pentium4 -mtune=native -pipe -fomit-frame-pointer

Bom, até a próxima então, pessoal!
– Sryche

3 Comentários »

RSS feed for comments on this post. TrackBack URI

  1. Um aumento de 9.5x na velocidade realmente não é pouca coisa. Tava meio em dúvida se instalava o 1.9 (instável ainda), mas depois dessa…

    E quanto ao C, bem… covardia, né?

    Mas ele deve ter levado umas 9.5x mais tempo que você pra escrever o código.

  2. Hahaha, não, se você ver, o código é basicamente o mesmo, nesse caso não utilizamos códigos complexos então fica fácil de fazer em todas :]

    Eu pretendo fazer um teste desse em fortran, mas é difícil arranjar alguém que programe😡

  3. // Fibonacci.java
    public class Fibonacci {
    public static void main(String[] args) {

    Result resp = new Result();

    for (int i=0; i<36; i++) {
    System.out.println(resp.Fib(i));
    }
    }
    }

    // Result.java
    public class Result {

    public int Fib(int n){
    if (n == 0 || n == 1) {
    return n;
    }

    return Fib(n – 1) + Fib(n – 2);
    }
    }

    real 0m0.766s
    user 0m0.540s
    sys 0m0.008s


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Blog no WordPress.com.
Entries e comentários feeds.

%d blogueiros gostam disto: