Alysson Neves Bessani wrote:
>
> >
> > Aproveitando, eu gostaria de fazer um alerta para todos em relacao
> > a performance. Muita gente assume que Java sera muito lento
> > para o que voce quer fazer, sem nunca ter experimentado (nao estou
> > dizendo que eh esse o caso). Isso acontece muito com programadores C.
> > Hoje em dia, em especial com as novas tecnologias como o HotSpot,
> > voce deve considerar com muito cuidado essa decisao.
<parte sem relevancia removida>
> > Bruno.
> >
>
> Bruno, ou demais membros da lista, eh verdade que as atuais JVM's
> chegam a rodar um programa java com performance bastante semelhante a um
> programa em C++? Isto desconsiderando-se a "inicializacao" do programa,
> quando ha uma serie de "coisinhas" como as pilhas de constantes e
> variaveis da classe que a JVM tem que carregar do .class.
>
(Desculpem a resposta longa, mas essa eh uma questao importante
para todos, e por mais que eu fale, nunca eh suficiente...)
Resposta rapida: as novas JVMs (em particular o HotSpot) trazem a
performance de Java (interpretado) para proximo da performance de C++
compilado.
Resposta longa:
Observe que essas comparacoes sao bastante complicadas, ja que
para voce poder comparar bananas com bananas voce precisa estar falando
de um programa em C++ que faca o que um programa em Java faz. Ou seja,
um programa em C++ que entre outras coisas garanta:
- alocacao e desalocaco de memoria corretamente
- que nao existirao ponteiros perdidos no programa
- realize checagens de execoes
Nao so isso, existe um outro lado que eh facilidade e o tempo de
desenvolvimento da aplicacao. A IDC estima que cerca de 75% do tempo
gasto debugando uma aplicacao provem de bugs direta ou indiretamente
realcionados com problemas na alocacao/desalocacao de memoria. Bugs
que nao existem na plataforma Java. Alem disso, bibliotecas como
threads, serializacao, gui, e mesmo coisas como tratamento de excessoes,
que fazem parte da plataforma Java, sao em geral adendos e/ou bibliotecas
proprietarias em C++. Nao so isso, mas a questao de portar a sua aplicacao
para 2 plataformas pode ser um trabalho que requer tanto tempo quanto
desenvolver a aplicacao, e em Java voce ganha a portabilidade para
diversas plataformas quase que de graca.
Por outro lado, performance eh algo sempre relativo. Quando C foi
lancado, era cerca de 20x mais lento do que o assembler. Ainda hoje,
um programa escrito em C pode ser _varias_ vezes mais lento do que um
escrito em Assembler. Quantos nessa lista que programam em C prefeririam
programar em Assembler e acham que o programa ficaria melhor? Por
outro lado, quando Java nasceu, dependendo da aplicacao, era cerca de 10
a 20 vezes vezes mais lenta do que C++. E Java ja esta mais de 20x
mais rapida do que a versao original...
Em geral, quando as pessoas comecam a fazer rodeios para responder eh
porque vao responder no final algo que nao agrada. Nao eh o meu caso,
eu so cito essas coisas todas porque sao importantes, e muitos de
voces nessa lista sao obrigados a convencer seus superiores, ou seus
clientes, de que Java eh uma tecnologia poderosa. Ou seja, existe
dezenas de coisas pelo menos tao importantes quanto performance ao
se desenvolver uma aplicacao, e se voce olhar apenas para uma delas,
voce estara completamente errado.
> Alguem pode me indicar URL's que demonstram estes testes (se
> existirem).
Tudo isso dito, eu sugiro que voces deem uma olhada na URL:
http://java.sun.com/features/1999/04/hotspot.html
Que mostra casos reais de utilizacao do HotSpot, quando era ainda
versao beta. E os numeros ja impressionantes dessa tecnologia ainda serao
muito melhores, ja que o HotSpot esta na sua primeira versao, e muitas
melhorias que nao foram incluidas ainda virao com a tecnologia.
Vejam abaixo alguns trechos do artigo, leiam e passem pra frente.
No geral, Java eh a tecnologia ideal para o desenvolvimento das
novas aplicacoes de rede. Nao desperdice o seu tempo tentando
dar voltas porque voce considera que esse ou aquele problema eh
limitante. Nenhuma outra tecnologia de desenvolvimento tem tanta
gente, de tantas empresas, trabalhando para a melhoria da tecnolgia.
A versao 1.2 de Java (sem o HotSpot) eh 20 vezes mais rapida do que
a versao 1.0.2. Que outra tecnologia deu esse ganho de performance na
sua aplicacao em um periodo de apenas 4 anos? E isso so tende a
melhorar.
Abracos,
Bruno.
Vejam abaixo alguns trechos do artigo (_enfases_ adcionadas por mim):
(...)
The results were surprising and consistent. In _virtually_every_case_,
these real-world application developers say that, _at_a_minimum_, simply
installing the Java HotSpot performance engine _doubled_the_performance_
of their server-side Java technology-based applications. In some cases,
depending on the nature of the application, the pluggable Java HotSpot
performance engine _turbo-charged_runtime_performance_four-fold_.
(...)
Both systems are transaction intensive, seeing as many as 20 request
processes per second on Sun SPARCTM servers. "We did some testing with an
earlier beta version [of the Java HotSpot performance engine], and were very
impressed," says Dr. Michael Christiansen, Ph.D., a consulting programmer
with the $968 million wireless messaging and information provider. "We saw
an overall performance boost on server-side apps, which was very
encouraging. And the amount of time per transaction was _decreased_four_fold_."
(...)
Heir says the most recent Java HotSpot performance engine beta (RC2)
has _pushed_the_performance_ of their Java technology-enabled servers to
_nearly_that_of_compiled_C++_.
>
> Valeu.
>
> Alysson Neves Bessani
> mailto:[EMAIL PROTECTED]
> LES- Software Engineering Laboratory
> UEM- Universidade Estadual de Maringa
>
> --------------------------- LISTA SOUJAVA ---------------------------
> http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
> [dúvidas mais comuns: http://www.soujava.org.br/faq.htm]
> [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
> ---------------------------------------------------------------------
--
Bruno.
______________________________________________________________________
Bruno Peres Ferreira de Souza Sun Microsystems
System Engineer - Java Technologist [EMAIL PROTECTED]
if I fail, if I succeed, at least I live as I believe
--------------------------- LISTA SOUJAVA ---------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
[dúvidas mais comuns: http://www.soujava.org.br/faq.htm]
[para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
---------------------------------------------------------------------