자바에서 같은 바이트 수를 가지는 long 형과 double 형의 계산 속도 차이가 거의 나지 않는다는 것을 며칠 삽질한 결과 알아냈다. 정수형 연산이 훨씬 빠를거라고 지레 짐작했던 것이 보기 좋게 빗나간 것이다. 왜 그런지는 아직도 잘 모르겠다.
실험 방법은 long형으로 고정 소숫점 숫자 연산을 간단하게 구현하고, 예를 들어 처음 여섯 자리를 소수 자리로 간주한다면 (즉 1,000,000이 1.0임)
- 덧셈,뺄셈은 그대로 수행한다.
- 두 수의 곱셈은 각각을 1000으로 먼저 나누고 곱셈
- 두 수의 나눗셈은 나눈 결과에 1000000을 곱한다.
이렇게 연산을 하게끔 구성해 놓고 거의 동일한 연산을 수행해 보았더니 오히려 double형을 사용한 것이 더 빨르다는 결과가 나왔다.
이제는 C++로 코딩해도 똑같은 결과가 나올까 궁금하다.
댓글 없음:
댓글 쓰기