| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/05/2007 19:45:26
|
Paulo Roberto Schiavon
JavaGuru
![[Avatar]](/images/avatar/0cfe3c931a81acba365b335768dd0d93.jpg)
Membro desde: 16/09/2006 18:31:40
Mensagens: 230
Localização: Logo alí ...
Offline
|
Olá,
Vou entrar em um projeto de otimização de sistema, ou seja, basicamente vou pegar uma ronita altera-la e após a alteração a mesma deve atingir os mesmos objetivos porém de uma forma muito mais rapida.
Tenho uma boa base de analise de algoritmos, identificar se o mesmo é lg n, O(N), etc .... porém quero ir mais afundo!
Quero saber a nível de custo de comando:
Por exemplo: o que custa mais para o processador, um pré ou um pós encremento?!
Outro exemplo: O que custa mais um for ou um while ....
A tambem tenho uma boa base de assembler e alguns comandos consigo deduzir como o comando fica na linguagem de maquina e dai consigo tirar um achismo de qual custa mais....
Alguém possui alguma apostila sobre isso, livro para indicação, alguma fonte de conhecimento?!
Sei que a experiência seria a melhor, porém to querendo da uma adiantada, )
Muito Obrigado e abraços,
Paulo
|
Mainframe é meu ganha pão ...
... e Java é a minha diversão!
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/05/2007 20:02:34
|
Tecnoage
GUJ Master
Membro desde: 13/03/2005 23:18:07
Mensagens: 1723
Localização: SP
Offline
|
Cara, eu tenho algumas documentações impressas a respeito disso. Porém estou no trabalho, quando chegar em casa, dou uma olhada e t dou um toque... este é um assunto que me interessa bastante..
|
Arquiteto de Software
Sysped Solutions
R3 SAP CAT-83, NF-e, ECD, EFD, CT-e, MANAD, IN86
www.sysped.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/05/2007 20:09:12
|
Roger75
GUJ Master
![[Avatar]](/images/avatar/a82d922b133be19c1171534e6594f754.jpg)
Membro desde: 26/10/2003 12:18:59
Mensagens: 1294
Offline
|
Se seu sistema usar bancos de dados como o Oracle, por exemplo, você pode fazer análise de custo das próprias queries do sistema, melhorando a performance dos comandos. É o que os DBAs chamam de "tunning".
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/05/2007 20:15:26
|
Pedrosa
JWizard
![[Avatar]](/images/avatar/2b763288faedb7707c0748abe015ab6c.jpg)
Membro desde: 13/07/2005 13:08:08
Mensagens: 2505
Localização: São Paulo - Brasil
Offline
|
Cara na atual edição da Mundo Java tem uma matéria sobre Profile em aplicações Java, não sei se é exatamente isso que você precisa, mas segue o link, na matéria ensina a usar um plugin do Eclipse para esses testes.
http://www.mundojava.com.br/NovoSite/materiacapa.shtml
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/05/2007 20:18:11
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Os seus exemplos são terríveis
Por exemplo: o que custa mais para o processador, um pré ou um pós incremento?!
Outro exemplo: O que custa mais um for ou um while ....
No primeiro caso: tanto faz. No segundo caso: tanto faz.
É um bocado difícil, dado um código Java, determinar "só de olhar" qual é mais rápido, a menos que o algoritmo seja totalmente diferente (se um é O(n^2) e outro é O(log n) então dá para saber que para n suficientemente grande, o algoritmo O(log n) é mais rápido).
De modo geral:
- Dependendo do processador, o "JIT" ("just-in-time compiler") gera código diferente. Por exemplo, se ele estiver rodando em um P-IV gera código diferente de quando ele roda em um P-III ou um Athlon.
- Código mais bobo otimiza melhor que código muito "esperto".
- Não saia de um loop com uma exception; saia usando uma condição.
Há muitas variáveis (como "cache hits & misses", e outras coisas) que tornam extremamente difícil determinar a velocidade relativa de um código em relação a outro, sem rodar o código e fazer uma série de benchmarks.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/05/2007 20:56:26
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Só para ter uma idéia de como não adianta usar truques de programação, eis os resultados de um benchmark:
Resultados:
Ou seja, sair de um loop com uma exception não é um bom negócio.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/05/2007 00:07:47
|
Paulo Roberto Schiavon
JavaGuru
![[Avatar]](/images/avatar/0cfe3c931a81acba365b335768dd0d93.jpg)
Membro desde: 16/09/2006 18:31:40
Mensagens: 230
Localização: Logo alí ...
Offline
|
thingol wrote:Os seus exemplos são terríveis
Por exemplo: o que custa mais para o processador, um pré ou um pós incremento?!
Outro exemplo: O que custa mais um for ou um while ....
No primeiro caso: tanto faz. No segundo caso: tanto faz.
HuahuHUHAUhuAHUhu!
Foi apenas um exemplo, sabia que ia dar na mesma, coloquei para que o pessoal entende-se até aonde queria chegar...
Sei que o meu objetivo é mirabolante, porém não custa tentar....
Sobre a exception ... não apenas em um loop mas em qualquer parte do código se concluir que lançar uma exception demora mais!!!
Tecnoage to esperando esse material com ansiedade!
thingol belo exemplo .... é bem por ai meu raciocínio..... to modificando o código e colocando um time para verificar o que eu to modificando, talvez milésimos de segundos ou nanossegundos em apenas um rotina não faça diferença, porém são muitas classes que rodam muitas vezes diariamente.....
Abraços....
|
|
|
 |
|
|