2013-03-02 8 views
0

2 개의 정수를 나누어서 BigDecimal을 만들 수 있습니까? 코드를 최적화하려고합니다. 새로운 BigDecimal을 선언 한 횟수를 줄이면 처리 속도가 상당히 빨라집니다. 그 라인을 따라int를 BigDecimal로 int로 나눈 값

int example1 = 103993; 
int example2 = 33102; 

BigDecimal example3 = example1/example2; 

또는 뭔가 : 나는 이런 식으로 뭔가를 할 수있는 경우 궁금 해서요

BigDecimal tester = new BigDecimal("103993") 
     .divide(new BigDecimal("33102"), 2000, BigDecimal.ROUND_DOWN); 

: 지금 현재, 대부분의 나는 어떻게 나의 계산을 감소하는 방법이다 나는 알고있다. 나의 유일한 목표는 실행 시간을 빠르게하는 것입니다.

+10

조숙 한 최적화의 함정에 빠지지 마십시오. 코드를 프로파일 링 할 때까지 (그리고 실제로 문제가있을 때까지) 어떤 시간을 들여야할지 모를 때가 있습니다. –

+0

둘 다'BigDecimal'을 먼저 변환하는 것보다 다른 방법이 있을지 모르겠습니다. 그래서 최적화는 부적절합니다 ... – Mysticial

+0

나는 그것이 유일한 선택이라고 믿습니다. 또한 코덱을위한 질문 하나입니까? –

답변

4

당신이 valueOf 방법을 사용하여 해당가 BigDecimal의 내부 캐시 사용 할 수있는 약간의 개선이있다 :

BigDecimal.valueOf(example1).divide(
    BigDecimal.valueOf(example2), 2000, BigDecimal.ROUND_DOWN); 
2

한마디가, 아니. 하나를 int으로 나눌 때까지 이미 정보를 잃어 버렸습니다.