Pergunta

Eu estive pensando sobre as melhorias de desempenho elogiado no Java SE 6 - é no compilador ou o tempo de execução? Dito de outra forma, seria uma aplicação Java 5 compilado por JDK 6 ver uma corrida melhora sob JSE 5 (indicando uma melhor otimização do compilador)? Será que um aplicativo Java 5 compilado por JDK 5 ver uma corrida melhora sob JSE 6 (indicando uma melhor otimização de tempo de execução)?

Tenho notado que a compilação em JDK 6 leva quase o dobro do tempo como o fez sob JDK 5 para exatamente a mesma base de código; Eu estou esperando que pelo menos alguns dos que mais tempo está sendo gasto em otimizações do compilador, espero levando a JARs maior performance e guerras. de Dom Info JDK realmente não entrar em detalhes sobre as melhorias de desempenho que fizeram - Eu suponho que é um pouco da coluna A e um pouco da coluna B, mas eu me pergunto qual é o maior influência. Alguém sabe de quaisquer referências feitas no JDK 6 vs. JDK 5?

Foi útil?

Solução

Eu não ouvi sobre melhorias no compilador, mas a informação extensiva tem sido publicado sobre as melhorias de desempenho de tempo de execução.

Guia de migração:

[ http://java.sun.com/javase /6/webnotes/adoption/adoptionguide.html]

Performance whitepaper:

[ http://java.sun.com/performance/reference /whitepapers/6_performance.html]

Outras dicas

javac, que compila a partir do código Java para bytecodes, faz quase nenhuma otimização. Na verdade otimização, muitas vezes tornar o código realmente ficar mais lento por ser mais difícil de analisar para otimização mais tarde.

A única diferença significativa entre o código gerado para 1.5 e 1.6 é que, com -target 1,6 informação extra é adicionado sobre o estado da pilha para fazer a verificação mais fácil e mais rápido (Java ME faz isso também). Isso afeta apenas as velocidades de carregamento de classes.

A parte otimização real é o compilador hotspot que bytecode de compilação de código nativo. Isto é, mesmo atualizados em algumas versões de atualização. No Windows apenas a versão mais lento C1 cliente de hotspot é distribuído na JRE por padrão. Os C2 servidor hotspot corre mais rápido (uso -server na linha de comando java), mas é mais lento para iniciar e usa mais memória.

Também as bibliotecas e ferramentas (incluindo javac) às vezes têm trabalho de otimização feito.

Eu não sei por que você está encontrando JDK 6 mais lento para compilar o código do JDK 5. Existe alguma diferença sutil na configurar?

Seus quase 100% o tempo de execução. Embora seja possível para alguns truques básicos de compilação para torná-lo para o compilador Java em si, eu não acredito que há quaisquer melhorias significativas entre Java 1.5 e 1.6.

Tem havido uma série de novas melhorias e otimização na nova máquina virtual java. Assim, a parte principal, você verá melhor desempenho é durante a execução de java com a JVM versão 6.

Compilando código java velho usando o Java 6 JDK provavelmente irá produzir um código mais eficiente, mas as principais melhorias encontram-se na máquina virtual, pelo menos é isso que eu tenho notado.

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