Pergunta

Se eu ligar o gerador de informações de depuração com Javac em seguida, os arquivos de classe são 20-25% maior. Tem essa quaisquer efeitos de desempenho na execução do programa de Java? Se sim em que condições e como muitos. Espero um pouco impacto sobre o carregamento das classes, porque os arquivos são maiores, mas isso deve ser mínima.

Foi útil?

Solução

Em qualquer idioma, informações de depuração é meta informação. Ele, por sua natureza aumenta o tamanho dos arquivos de objetos, aumentando assim o tempo de carga. Durante a execução fora de um depurador, esta informação é realmente completamente ignorado. Como descrito (embora não seja claramente) no JVM especificação as informações de depuração é armazenada fora do fluxo de bytecode. Isto significa que em tempo de execução, não há diferença no arquivo de classe. Se você quer ter certeza de que, experimentá-lo: -).

Ps. Muitas vezes, para depuração não há valor em desligar otimização. Que faz ter um impacto no desempenho.

Outras dicas

Desligar depuração por si só não deve fazer a diferença em tudo. Mas uma vez que você desliga a depuração e ligue otimização, você deve ver uma diferença, pois isso faz com que algumas otimizações estáticos em tempo de compilação. Desta forma, mesmo o seu hot-spot otimizado código fica mais rápido em tempo de execução.

Mas até agora, o trade-off entre a obtenção significando Stack-traços completos ou ter um pouco mais fácil de desempenho, eu sempre votou para a pilha-traços. Afinal de contas, os usuários estão dispostos a gastar $ 1000 cada ano para obter uma máquina mais rápida, mas não estão dispostos a gastar 15 minutos para dar-lhe mensagens de erro significativo para você para resolver seus problemas.

Depois dos anos, estou mais disposto a valorizar meus 15 minutos superior a US $ do usuário 1000. :)

Por favor, esteja ciente de que desde JDK1.3 javac ignora quaisquer opções de otimização, "otimização de tempo de compilação é desnecessária"

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top