Diferença de performance entre as versões do OpenSDK e da Sun  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Dieval Guizelini
Virtual Machine Man
[Avatar]

Membro desde: 05/07/2006 14:39:44
Mensagens: 570
Localização: Curitiba - PR
Offline

Senhores,

desenvolvi um programa que realiza o parser em um arquivo texto que possui o tamanho de 51Mb e tem várias peculiaridades (não é XML).

Estava executando ele no Ubuntu 9.1 com a versão da Sun: Java SDK/JRE versão Sun 1.6.0_20-b02 e Java HotSpot 64 Bit Server VM (build 16.3-b01)
Resolvi fazer um teste com o OpenSDK: OpenJDK Runtime Enviroment (IcedTea6 1.6.1 ? 6b16-1.6.1-3ubuntu3) e OpenJDK 64 bit Server VM (build 14.0-b16)

A diferença de performance (medida com o comando time do linux) foi de:
Sun: real 23.248s user: 24.070s e sys: 1.910s
OpenJDK: real 18.617s user 22.340s e sys 1.570s

Os parâmetros para as VM foram as mesmas: -d64 -server -Xms1024m -Xmx1024m

Alguém sabe se o OpenSDK está confiável para por em produção? Alguém já está utilizando ele em ambiente web com o tomcat 6?

Valeu

Sun Certified Java Programmer 5.0
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Oi Dieval,

Movi o seu tópico para o Java Avançado. Acho que o pessoal do básico não deve fazer esse tipo de análise.
Nunca usei o OpenJDK e fiquei bem empolgado com esses resultados. Vou acompanhar esse tópico de perto também

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Se não me engano, as implementações de XML no OpenJDK e no JDK normal da Sun são um pouco diferentes (não sei qual delas anda mais atrasada em relação à outra).

De qualquer maneira, a JVM que vem com o OpenJDK, se não me engano, está na versão que virá com o Java 7, e essa JVM tem algumas melhorias de desempenho em relação à JVM do Java 6.

This message was edited 1 time. Last update was at 07/07/2010 13:57:48

Dieval Guizelini
Virtual Machine Man
[Avatar]

Membro desde: 05/07/2006 14:39:44
Mensagens: 570
Localização: Curitiba - PR
Offline

Opa valeu Vinicius (parabéns, hoje que vi que você se tornou moderador),

Entanglement, a aplicação que descrevi e que ficou quase 25% mais rápida, não utiliza xml. O programa utiliza muita substring, expressões regulares, comparações etc.

abs


Sun Certified Java Programmer 5.0
[WWW]
garcia-jj
JWizard

Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline

Há algum tempo ví um análise do Cabelo do Viva o Linux que mostrava as diferenças entre um programa simples compilado usando o gcj e javac. No caso algumas tarefas ficaram melhor rodando via gcj, e outras no javac. Creio que no seu caso alguma instrução para ler esse arquivo possa ser mais otimizada no OpenJDK, ou seja, não que o OpenJDK seja mais rápido, talvez esses métodos que você usou são mais rápidos, ou talvez o próprio compilador do OpenJDK pode ter feito alguma otimização.

Há algum tempo eu fiz uns testes com o IcedTea, que nada mais é que o OpenJDK empacotado pela Redhat apenas com dependências livres, e tive uma boa impressão com o projeto. Os testes que eu fiz foi em meados de 2007/2008.

Aprofundando o tópico, há também uma implementação da API JSE da Apache, o Harmony, que visa ser uma implementação com uma licença mais flexível que a GPL.


http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum.
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline

Eu fiz dezenas de benchmarks entre essas duas versões e pude constatar que o openjdk está bem afrente do kit da oracle.
Entre as melhorias:

* Coletor de lixo g1, que usa um algoritmo bem diferente do outro.(Muita diferença de desempenho, a sensação é quase tempo real)
* java2d otimizado.
* Algumas alterações no nio

entre outras....

Realmente compensa usar o openjdk ou os splashs do jdk7.

Agora para produção creio que devem ser feitos testes de campo para ter certeza da estabilidade.

www.citrox.com.br
partenon
JavaChild
[Avatar]
Membro desde: 27/06/2010 15:08:10
Mensagens: 103
Localização: Brno, Czech Republic
Offline

Agora para produção creio que devem ser feitos testes de campo para ter certeza da estabilidade.


Este eh o grande ponto, na minha opiniao. OpenJDK eh um projeto relativamente novo ainda, mas cujos fontes foram baseados nos codigos da propria Sun. As partes que nao sao originarias da JVM da Sun sao partes com codigos assembly (que estao em processo de conversao) e codigos cuja Sun nao tinha direitos para redistribuir.

O que quero dizer eh que ele *deve* ser tao ou mais estavel do que a JVM da Sun, mas eh sempre bom fazer testes, independente da VM que sera utilizada. Dependendo de quao critica eh sua aplicacao, vale a pena dar uma navegada pelo bugzilla do OpenJDK pra ver se algum bug serio pode te afetar.

http://www.google.com/profiles/partenon
[WWW]
Dieval Guizelini
Virtual Machine Man
[Avatar]

Membro desde: 05/07/2006 14:39:44
Mensagens: 570
Localização: Curitiba - PR
Offline

Senhores,

apenas para registrar,

refiz o parser utilizando expressões regulares na maior parte do código e a coisa se inverteu, os tempos ficaram em:

OpenSDK 5.037s
Sun: 3.557s

Ou seja, a biblioteca de expressões regulares da Sun possui um desempenho melhor que a versão do OpenSDK.

fw

Sun Certified Java Programmer 5.0
[WWW]
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline

Dieval Guizelini wrote:Senhores,

apenas para registrar,

refiz o parser utilizando expressões regulares na maior parte do código e a coisa se inverteu, os tempos ficaram em:

OpenSDK 5.037s
Sun: 3.557s

Ou seja, a biblioteca de expressões regulares da Sun possui um desempenho melhor que a versão do OpenSDK.

fw


Pode não ser isso. As vezes é o algoritmo implementado. Dá uma olhada no profiler do netbeans e analise os metodos internos que são chamados.

www.citrox.com.br
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team