Falando em YARV…

Resolvi passar minha solução para problema 14 do Project Euler pela YARV para ver no que dá, e fiquei bastante surpreso. Aproveitei para escrever o mesmo algoritmo tosco em algumas outras linguagens e o resultado está no gráfico abaixo.


O gráfico está dividido em duas partes. À esquerda, o algoritmo calcula as correntes para todos os naturais entre 1 e 999999 e retorna a maior delas. Analisando o problema, percebi logo que as maiores correntes acontecem em números ímpares, então refiz os testes pulando os números ímpares. Curiosamente, pular os ímpares na versão com RubyInline (Ruby + C no gráfico) fez com que o programa ficasse um pouco mais lento.

A YARV executou a primeira versão em 32″ (contra 22″ do C# rodando no mono e 15″ no Java 6), e em 18″ na segunda (contra 9″ no C# e 8″ no Java 6). Se compararmos à do Ruby puro, é um ganho de 87% na primeira versão e de 76% na segunda. Nada mau, mesmo, Koichi.

Só para constar, testei o Python 2.5, que teve uma performance bem superior à do Ruby puro — mas nada de encher os olhos. C é hors concours, e executou em 1″ na primeira versão e em 0.8″ na versão pulando os pares.

Levando em conta o caráter experimental da YARV e as prováveis otimizações vindouras, acho que posso ficar tranqüilo quanto ao futuro da linguagem. Sei que para muitos casos Ruby resolve e que muita gente está feliz, mas todo mundo se beneficiará de um segundinho a menos aqui ou acolá. Esse nível de performance com a flexibilidade que experimentamos no Ruby 1.8 me põe um sorriso no rosto.

0 Respostas para “Falando em YARV…”



  1. Sem comentários ainda

Deixe uma resposta