[Cascavel-pm] Perl "roda mais lenta" que outras linguagens?

Otávio Fernandes otaviof em gmail.com
Quarta Março 24 20:14:08 PDT 2010


Eden,

> Decisões são sempre tomadas em tempo de execução, e qualquer linguagem

Em uma _linguagem_ estática como Java isso _não_ é verdade. Em tempo
de compilação praticamente tudo o que o software ira executar sobre a
VM será previamente decidido. Sim, existe closures nesta linguagem,
porem, o Java6 sofre com a performance desta feature
(http://weblogs.java.net/blog/2006/08/24/closure-and-performance).

Eu fiz uma apresentação sobre este conteúdo, aos interessados existe
em vídeo também:
http://www.slideshare.net/otaviof/dr-java-virtual-machine

> decente consegue carregar novos trechos em tempo de execução, e não é
> isso que determina se uma linguagem é dinâmica ou não. Não entendi a

Eu não tive a intenção de ressaltar ou definir este conceito. Mas
podemos aproveitar o material feito pelo São Paulo Perl Mongers:
http://github.com/otaviof/SPPM-Perl_101/blob/master/Introducao%20ao%20Perl%20(Perl%20101).pdf
(capítulo 1, partes 1.1.1, 1.1.2 e 1.1.3).

> relação disso com hotspots, que inserem otimizações nos trechos mais
> executados do código, as mesmas otimizações que um bom desenvolvedor
> faria na mão, e é essa a vantagem da tecnologia, tirar a carga de
> otimizações mundanas das mãos do desenvolvedor, e de fato, a
> existência de self-modifying code é o que viabiliza esse tipo de

Previsibilidade e estaticidade, viabilizam o excelente resultado do JIT da JVM.

> coisa. A otimização de que eu estou falando e que é realmente
> significativa trata da complexidade algoritmica, tecnologia nenhuma
> consegue transformar um algoritmo O(n^2) num algoritmo O(n), isso sim
> seria um ganho significativo. Disso tudo implica que um ser humano

É verdade, uma mudança como esta volta-se para quem escreve o
software, porem, no caso da JVM quando mais próximo da linguagem de
máquina, ou seja, quanto mais o JIT e Hotspot agem, menos ciclos são
necessários para executar uma tarefa.

> experiente e com conhecimento razoável sobre complexidade algoritmitca
> consegue analisar e otimizar código em qualquer linguagem, melhor do
> que uma VM, se isso é produtivo e/ou viável, depende do projeto e de
> outras considerações de engenharia, como custo, tempo e mão-de-obra
> disponível. Observa que eu não estou descartando otimizações a nível
> de VM como produtivos, mas fazer uma assertiva generalizada sobre
> desempenho disso vs aquilo é sempre perigoso.

Observo sim, e destaco a quantidade de linguagens dinâmicas que estão
sendo portadas para rodar sobre a JVM, podemos esperar resultados
excelentes quando o invoke_dynamic do Java7 estiver implementado.
Alguns artigos sobre o assunto: http://delicious.com/otaviof/jvm

> A propósito, aqui vai um texto divertido sobre otimização automática
> vs seres humanos: http://www.pbm.com/~lindahl/mel.html

Realmente muito bom. Obrigado.

> --
>   Eden Cardim       Need help with your Catalyst or DBIx::Class project?
>  Code Monkey                    http://www.shadowcat.co.uk/catalyst/
>  Shadowcat Systems Ltd.  Want a managed development or deployment platform?
> http://edenc.vox.com/            http://www.shadowcat.co.uk/servers/
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm

um abraço,

-- 
Otávio Fernandes <otaviof at gmail.com>
http://blog.emresumo.com


Mais detalhes sobre a lista de discussão Cascavel-pm