V8 x Tracemonkey
Ok, depois de compilar o v8, eu pensei: e agora? Após ler sobre o tracemonkey, minha idéia caiu no seguinte: eu compilo o tracemonkey e faço testes com ambos.
Eu adaptei o shell script que roda o benchmark do tracemonkey para rodar o mesmo benchmark, só que usando o v8.
Sobre as duas VMS:
- O líder do desenvolvimento do V8 é Lars Bak, que foi o líder técnico do Strongtalk e do HotSpot (Java) e também um grande contribuidor da maquina virtual original do Self. Segundo o projeto, o V8 é otimizado para acesso de propriedades e tem um coletor de lixo agressivo.
- O Tracemonkey usa código do Tamarin, a máquina virtual de JavaScript da Adobe, que doou o código para a Mozilla Foundation. A otimização e o JIT é feito usando um processo chamado Tracing Trees. Se você estiver disposto a ler um paper comprido, complicado e interessante, pode ler o Incremental Dynamic Code Generation With Trace Trees.
No geral, o tempo total dos testes foi menor para o tracemonkey, embora comparando os quadros, não teve uma máquina virtual que tenha vencido em todos os testes.
Os testes foram feitos usando a revisão 110 do v8 (disponível em http://v8.googlecode.com/svn/trunk) e a revisão db4260e7ee13 do tracemonkey (disponível em http://hg.mozilla.org/tracemonkey/), e foi usado o próprio benchmark do tracemonkey para testar as duas VMs.
Agora a pouco, eu refiz os testes com as últimas versões das máquinas virtuais, e os resultados se alteraram um pouco:
Diferente do teste do Brendan Eich, foi testado apenas VM e não o desempenho dela dentro do navegador, mas no geral, os resultados do meu teste aqui condizem com o dele.
Mais sobre o v8 e assuntos relacionados
- Benchmarks no Google Chrome (Alexander Limi)
- Ruby rodando no V8
- Tentando aplicar várias técnicas dos novos runtimes de JS para as linguagens dinâmicas da JVM - discussão na lista JVM-Languages, uma lista que agrega muitas pessoas que estão trabalhando em linguagens dinâmicas na JVM (JRuby, Jython, Scala e muitas outras).
- Lua JIT x Javascript
Syndicated 2008-09-04 14:37:19 (Updated 2008-10-01 14:27:33) from devlog