Java 컴파일러 또는 런타임 (또는 다른 언어 컴파일러)이 브랜치 3을 실현할 수있을만큼 똑똑하고 스마트하게 구현할 수 있습니까? 나는 많은 초기 개발자들과 함께 이런 종류의 "방어 프로그래밍"을 보았으며,이 죽은 무게가 바이트 코드에 머무르는 지 궁금해합니다. 자바 컴파일러가이 코드를 최적화 할 수 있습니까?
import java.util.Random;
class Example
{
public static void main(String[] args) {
int x = new Random().nextInt() % 10;
if (x < 5)
{
System.out.println("Case 1");
}
else
if (x >= 5)
{
System.out.println("Case 2");
}
else
{
System.out.println("Case 3");
}
}
}
또는이 더 무딘 경우
는boolean bool = new Random().nextBoolean();
if (bool)
{
System.out.println("Case 1");
}
else
if (bool)
{
System.out.println("Case 2");
}
JITC가 알아낼 수 있습니다. 아니면 매우 드문 것으로 프로파일 링을 통해 테스트를 최적화하고 실제 코드를 라인 밖으로 이동시킬 수 있습니다. (javac이 그것을 최적화하는 것은 아주 드문 일입니다.) –
측점 :'nextInt() % n' 대신'nextInt (n)'을 호출하십시오. 그것은 다양한 까다로운 경우를 처리합니다. http://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextInt(int) – Jerry101