나는 루프에서 반복 다음 코드 줄을 사용하고 있습니다 :현대 Java는 자동 할당을 어떻게 최적화합니까?
Object val;
while (logic())
val = val == null ? generateObj() : val;
나는 모든 경우 JVM은이 코드를 최적화하는 방법 궁금? 즉, val != null
이라면 JVM은 할당이 자체적으로 돌아가고 나머지 라인은 무시한다는 것을 의미합니까 아니면 val
의 참조를 복사하는 데 시간이 걸릴 것입니까?
내가 표준 JRE (6) 및 Windows 7을 제외하고
내 환경에서 JRE 7을 실행하고 있습니다 : 아주 잘 JVM을 최적화하지 않는 경우이 작업을,이 호출을 수행하는 가장 좋은 대안은 무엇인가? 그냥 if (val == null) val = generateObj();
?
어떤 이유 (호기심 옆)을 'if (val! = null) val = generateObj();'를 쓰지 않았다. –
아니요, 아니요. 이 질문은 Java가 어떻게 작동하는지에 관한 것입니다."JVM이 최적화하지 않으면 가장 좋은 대안은 무엇이 될까?" –
JVM이 최적화하지 않으면 가장 좋은 옵션은 최적화 부족을 무시하고 인간에게 가장 명확한 코드를 작성하는 것입니다. 로컬 필드에 대한 여분의 쓰기가 실행 시간의 상당 부분을 제외하고 응용 프로그램의 웅장한 계획에서 측정 할 수 있다면 _shocked_ 될 것입니다. – yshavit