[Resolvido] Qual tem a melhor performance? Estático ou Dinâmico?

4 respostas
T

Existe uma aplicação antiga que utiliza diversos métodos estáticos onde não há necessidade.
No estado que a aplicação se encontra daria um bom trabalho remover o ‘static’ de alguns desses métodos.

Mesmo assim gostaria de saber se a diferença de performance seria muito grande? Se vale a pena mudar esses métodos.
Se não souberem responder, como posso fazer um teste de performance? (Em qualquer IDE ou testador - este teste iria ter apenas 2 métodos idênticos sendo um estático o outro não com diversos acessos a eles).

4 Respostas

E

A diferença é tendendo a zero e não é isso que irá deixar seu programa mais rápido.
Veja (e continue) a discussão abaixo.
http://www.guj.com.br/java/279584-muitos-metodos-static-e-bom-ou-ruim

A

A diferença vai ser insignificante.

Você pode testar colocando um simples System.currentTimeMillis() pra pegar o tempo em milisegundos antes e depois da chamada do seu método:

System.out.println(System.currentTimeMillis());
// metodo estático ou método nao estático sendo chamado aqui no lugar desse comentário!
System.out.println(System.currentTimeMillis());

Você vai ver que o resultado se não for igual para métodos estáticos e não estáticos ali no meio, será muito parecido.

Se você quiser, você pode até aumentar a precisão para nanoseconds, ao invés de milis, com o System.nanoTime(), mas aí já é meio “overkill” ;).

T

Bem obrigado a todos pelas respostas

Interessante esse post (http://www.guj.com.br/java/279584-muitos-metodos-static-e-bom-ou-ruim). Valeu!

G

Adriano Almeida:
A diferença vai ser insignificante.

Você pode testar colocando um simples System.currentTimeMillis() pra pegar o tempo em milisegundos antes e depois da chamada do seu método:

System.out.println(System.currentTimeMillis());
// metodo estático ou método nao estático sendo chamado aqui no lugar desse comentário!
System.out.println(System.currentTimeMillis());

Você vai ver que o resultado se não for igual para métodos estáticos e não estáticos ali no meio, será muito parecido.

Se você quiser, você pode até aumentar a precisão para nanoseconds, ao invés de milis, com o System.nanoTime(), mas aí já é meio “overkill” ;).

mas olhar o tempo de uma execução, é impreciso mesmo. se fosse ao menos um pouco mais, tipo 1 milhao de vezes.

Criado 18 de agosto de 2012
Ultima resposta 20 de ago. de 2012
Respostas 4
Participantes 4