Firefox e os Fractais
Números romanos são só um dos ritos de passagem que todo programador, mais cedo ou mais tarde, acaba fazendo. Certa vez eu notei que era uma vergonha nunca ter implementado o conjunto de Mandelbrot na vida. Resolvi isso rapidamente escrevendo uma versão em Actionscript, e acabei ficando impressionado com o resultado! Com um pouquinho de otimização, o arquivo swf resultante tinha menos de 512 bytes.
É claro que eu resolvi tomar como desafio fazer o mesmo em outras linguagens. Em javascript foi tranqüilo, em java eu tive que apelar: só consegui atingir a barreira de 512 bytes escrevendo o bytecode diretamente na unha (source). Em python foi tão tranqüilo que, com a ajuda dos amigos, eu consegui reduzir para menos de 256 bytes:
De todas elas, a mais lenta certamente é a versão em javascript. Mas com todos falando bem do novo interpretador javascript do Firefox 3 Beta 5, eu resolvi usar esse fractal como benchmark. Fiz uma pequena modificação para imprimir o tempo gasto com o traçado, e eis os resultados:
É claro que eu resolvi tomar como desafio fazer o mesmo em outras linguagens. Em javascript foi tranqüilo, em java eu tive que apelar: só consegui atingir a barreira de 512 bytes escrevendo o bytecode diretamente na unha (source). Em python foi tão tranqüilo que, com a ajuda dos amigos, eu consegui reduzir para menos de 256 bytes:
De todas elas, a mais lenta certamente é a versão em javascript. Mas com todos falando bem do novo interpretador javascript do Firefox 3 Beta 5, eu resolvi usar esse fractal como benchmark. Fiz uma pequena modificação para imprimir o tempo gasto com o traçado, e eis os resultados:
- Firefox 3: 4.0 s
- Safari 3.1: 4.0 s
- IE 6: 8.3 s
- Firefox 2: 14.4 s
- Opera: 21.3 s
Marcadores: code, firefox, flash, fractal, java, javascript, python
4 Comentários:
Você já experimentou reimplementar a versão em javascrit usando "canvas"? deve ser absurdamente mais rápido. (minha versão está aqui: http://www.girino.org/frac/js/jsdraw.html -- é bem lenta porque eu uso "threads" para evitar que o IE trave, mas otimizando apenas para o firefox e reduzindo a resolucao seu ganho de velocidade deve ser grande.)
Por girino, Às 9 de abril de 2008 14:29
Ah sim, é que o constraint original era manter o código menor que 512 bytes. Depois eu faço com canvas pra ver como fica.
Por ricbit, Às 9 de abril de 2008 14:42
No Safari 3.0 o tempo foi 5.4s.
Versus 17s no Firefox 2 no mesmo sistema.
Mac OSX - Intel Core 2 Duo
Por Tornado, Às 9 de abril de 2008 14:45
Ubuntu 7.10,
Epiphany 2.20.1,
Time Elapsed: 17740 ms
Firefox 2.0.13,
Time Elapsed: 29964 ms
Opera 9.27,
Time Elapsed: 14659 ms
(com a vantagem de não travar durante esse tempo).
Firefox 3, beta 2,
Time Elapsed: 19847 ms
Por girino, Às 10 de abril de 2008 00:32
Postar um comentário
Links para esta postagem:
Criar um link
<< Início