| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 10:00:10
|
jdeveloper
JavaTeenager
Membro desde: 04/08/2005 08:55:58
Mensagens: 160
Offline
|
Eu tenho uma classe com aproximadamente 30 métodos.
Os nomes desses métodos estão em um arquivo de configuração.
Eu queria chamar os métodos através de reflection.
Mas me disseram que provoca uma perda de performance significativa.
O que vcs acham?
[]s
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 10:12:52
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline
|
Chamar um método via reflection é significativamente mais lento que chamá-lo diretamente. Isso importa no seu caso?
|
http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 10:51:38
|
jdeveloper
JavaTeenager
Membro desde: 04/08/2005 08:55:58
Mensagens: 160
Offline
|
louds wrote:Chamar um método via reflection é significativamente mais lento que chamá-lo diretamente. Isso importa no seu caso?
A aplicação atualmente demora em torno de 15 minutos para executar completamente. O que já é considerado bastante.
Então, se reflection vai deixar o sistema mais lento, não vale a pena.
Obrigado
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 11:36:07
|
fenrir
JavaEvangelist
Membro desde: 26/09/2002 13:06:19
Mensagens: 328
Localização: São Paulo
Offline
|
Se toda vez que você for chamar o método, o fizer usando Reflection, então a lentidão é considerável.
Mas se isso ocorrer apenas uma vez, a demora é desprezível, já que estamos falando de, no máximo, alguns poucos segundos (chutando absurdamente alto).
Agora, se estiver fazendo isso TODA vez que chama um método, não é caso de mantê-lo em cache?
|
Tem um Android? Gosta de tirar fotos? Que tal subi-las automaticamente para a internet? Dê uma olhada: http://autouploader.aguilarj.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 11:51:34
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline
|
Reflection normalmente figura como um dos últimos vilões de performance em todos os sistemas que tive de fazer profiling.
O problema mais comum é banco de dados, seguido de I/O em disco.
|
http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 12:06:59
|
jdeveloper
JavaTeenager
Membro desde: 04/08/2005 08:55:58
Mensagens: 160
Offline
|
fenrir wrote:Se toda vez que você for chamar o método, o fizer usando Reflection, então a lentidão é considerável.
Mas se isso ocorrer apenas uma vez, a demora é desprezível, já que estamos falando de, no máximo, alguns poucos segundos (chutando absurdamente alto).
Agora, se estiver fazendo isso TODA vez que chama um método, não é caso de mantê-lo em cache?
Eu chamo apenas uma vez cada método, mas eu chamo mais de 30 métodos.
Então eu acho que a soma dos tempos seria muito alta.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 12:11:21
|
fmeyer
Moderador
Membro desde: 22/02/2005 17:26:29
Mensagens: 1583
Localização: Sao Paulo
Offline
|
louds wrote:Reflection normalmente figura como um dos últimos vilões de performance em todos os sistemas que tive de fazer profiling.
O problema mais comum é banco de dados, seguido de I/O em disco.
Os meus foram respectivamente, Programadores incompetentes. Storage ( incluindo DB, Arq, ... ) Garbage collectors psicopatas
|
Fernando Meyer http://fernandomeyer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 12:11:52
|
jdeveloper
JavaTeenager
Membro desde: 04/08/2005 08:55:58
Mensagens: 160
Offline
|
louds wrote:Reflection normalmente figura como um dos últimos vilões de performance em todos os sistemas que tive de fazer profiling.
O problema mais comum é banco de dados, seguido de I/O em disco.
Eu carrego os parâmetros de um arquivo e chamo uma stored procedure. O programa demora uns 15 minutos pra executar completamente.
Esse tempo é por causa das procedures?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 13:40:22
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
jdeveloper wrote:Eu carrego os parâmetros de um arquivo e chamo uma stored procedure. O programa demora uns 15 minutos pra executar completamente.
Esse tempo é por causa das procedures?
O que te leva a ter alguma duvida sobre isso?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 15:17:02
|
fenrir
JavaEvangelist
Membro desde: 26/09/2002 13:06:19
Mensagens: 328
Localização: São Paulo
Offline
|
jdeveloper wrote:
fenrir wrote:Mas se isso ocorrer apenas uma vez, a demora é desprezível, já que estamos falando de, no máximo, alguns poucos segundos (chutando absurdamente alto).
Eu chamo apenas uma vez cada método, mas eu chamo mais de 30 métodos.
Então eu acho que a soma dos tempos seria muito alta.
Quando eu escrevi "alguns poucos segundos", me referi à soma de todas as chamadas, e não alguns poucos segundos para cada chamada! Se a linguagem demorasse tanto assim pra fazer Reflection, poucos programas em Java rodariam em velocidade maior que tartaruga!
jdeveloper wrote:Eu carrego os parâmetros de um arquivo e chamo uma stored procedure. O programa demora uns 15 minutos pra executar completamente.
Esse tempo é por causa das procedures?
Essa sua pergunta e seu comentário me levam a crer que você está chutando que a demora é por causa do Reflection. Já rodou um profiler? Ou um simples log pra ver exatamente onde está a demora na execução?
|
Tem um Android? Gosta de tirar fotos? Que tal subi-las automaticamente para a internet? Dê uma olhada: http://autouploader.aguilarj.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 16:38:51
|
jdeveloper
JavaTeenager
Membro desde: 04/08/2005 08:55:58
Mensagens: 160
Offline
|
fenrir wrote:
Essa sua pergunta e seu comentário me levam a crer que você está chutando que a demora é por causa do Reflection. Já rodou um profiler? Ou um simples log pra ver exatamente onde está a demora na execução?
Se você ler novamente os meus posts verá que eu não disse que estava usando reflection, e sim que estava pensando em usar. Pois, queria saber se a diminuição de performance, no meu caso, seria significativa.
Eu tenho pouco conhecimento de banco de dados e apesar de achar que a demora na execução era por causa da stored procedure, eu não tinha certeza disso. Pois, o Louds disse que I/O tb deixa o sistema lento e eu uso bastante leitura de disco.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 18:14:18
|
fenrir
JavaEvangelist
Membro desde: 26/09/2002 13:06:19
Mensagens: 328
Localização: São Paulo
Offline
|
jdeveloper wrote:Se você ler novamente os meus posts verá que eu não disse que estava usando reflection, e sim que estava pensando em usar. Pois, queria saber se a diminuição de performance, no meu caso, seria significativa.
Ops....sorry!! My mistake!
jdeveloper wrote:Eu tenho pouco conhecimento de banco de dados e apesar de achar que a demora na execução era por causa da stored procedure, eu não tinha certeza disso. Pois, o Louds disse que I/O tb deixa o sistema lento e eu uso bastante leitura de disco.
Mas descobrir se o problema é a procedure é relativamente simples: veja quanto tempo demora (pegando a hora de início e a hora de fim). E talvez fazer um "profile" no banco também seja interessante. De repente a inclusão de alguns índices nas tabelas não acelere consideravelmente o processo...
|
Tem um Android? Gosta de tirar fotos? Que tal subi-las automaticamente para a internet? Dê uma olhada: http://autouploader.aguilarj.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2006 10:26:34
|
carneiro
JavaEvangelist
![[Avatar]](/images/avatar/18b91b19f6a289e7708da7f778b2c609.jpg)
Membro desde: 07/04/2005 11:37:42
Mensagens: 328
Offline
|
Eu chuto que invocar 30 métodos apenas uma vez não vai causar um prejuízo considerável de performance. É um palpite...
|
Davi Luan Carneiro
Desenvolvedor JEE |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2006 10:31:19
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Pra que chutar? Pega um profiler e ve, uai.
|
|
|
 |
|
|