BigDecimal에 대해 이야기 할 때 Java 컴파일러가 곱셈을 1 씩 제거합니까?BigDecimal : Java 컴파일러가 곱셈을 1 씩 최적화 할 수 있습니까?
나는이 비슷한 서있어 : 기본적으로 그래서
/*
* Always returns Integers 1, 2 or 3.
*/
Integer getOneTwoOrThree(){
//some code
}
, 상기 getOneTwoOrThree 방법으로 선언
BigDecimal bd = getBigDecimal();//get arbitrary bigDecimal, could be anyone.
bd = bd.multiply(new BigDecimal(getOneTwoOrThree());
.
getOneTwoOrThree()
이 1이면 컴파일러에서 곱셈을 수행합니까? 아니면 명령을 무시할 것인가?
이것은 다소 실존 적으로 의심 스럽지만, 나는 어느 정도 초기 단계에 있다고 생각합니다.
여기에는 너무 많은 코드가 인라인이나 다른 것으로 생각됩니다. 나는 JIT가 이것으로 많은 것을 할 수 있다면 매우 놀랄 것이다. 그러나이 구현에서는 1을 곱하는 것이 많은 자릿수 (더 많은 자릿수, 루프 반복 횟수)로 곱하는 것보다 본질적으로 저렴합니다. – erickson
아마 JIT에 맞을 것입니다. BigDecimal의 크기가 작아서 제품이 길어지면 코드 경로가 상당히 짧아집니다. 불행하게도, 거대한 숫자에 1을 곱하면 어려운 경우가됩니다. –