프로그래머들 사이에서 오랫동안 믿어온 것은 정수 계산이 다음과 같다는 것입니다. 본질적으로 부동 소수점 계산보다 빠릅니다. 그러나 이 가정은 최신 멀티 코어 프로세서에는 더 이상 적용되지 않을 수 있습니다.
다양한 CPU 아키텍처에서 정수 및 부동 소수점 계산의 상대적 속도를 평가하려면 다음을 살펴보겠습니다. 일부 데이터에:
64비트 Intel Xeon X5550 @ 2.67GHz, gcc 4.1.2 -O3:
short add/sub: 1.005460 [0] short mul/div: 3.926543 [0] long add/sub: 0.000000 [0] long mul/div: 7.378581 [0] long long add/sub: 0.000000 [0] long long mul/div: 7.378593 [0] float add/sub: 0.993583 [0] float mul/div: 1.821565 [0] double add/sub: 0.993884 [0] double mul/div: 1.988664 [0]
32비트 듀얼 코어 AMD Opteron(tm) 프로세서 265 @ 1.81GHz, gcc 3.4.6 -O3:
short add/sub: 0.553863 [0] short mul/div: 12.509163 [0] long add/sub: 0.556912 [0] long mul/div: 12.748019 [0] long long add/sub: 5.298999 [0] long long mul/div: 20.461186 [0] float add/sub: 2.688253 [0] float mul/div: 4.683886 [0] double add/sub: 2.700834 [0] double mul/div: 4.646755 [0]
이러한 결과는 이러한 아키텍처에서 아키텍처 간 성능 격차가 있음을 보여줍니다. 정수 및 부동 소수점 연산은 상대적으로 작습니다. 어떤 경우에는 부동 소수점 계산이 정수 연산보다 더 빠를 수도 있습니다. 특히 'long long'과 같은 긴 데이터 유형의 경우 더욱 그렇습니다.
몇 가지 요소가 부동 소수점 성능에 영향을 미칩니다. 및 정수 계산:
특정 대상 하드웨어에서 부동 소수점 및 정수 계산 성능을 정확하게 테스트하려면 , 다음 단계를 따르세요.
정수 계산은 한때 부동 소수점 계산보다 훨씬 빨랐지만 최신 하드웨어에서는 그 격차가 크게 줄어들었습니다. 수퍼스칼라 아키텍처, 전용 FPU 및 효율적인 부동 소수점 라이브러리를 통해 부동 소수점 연산의 속도가 정수 연산과 비슷해졌습니다. 따라서 정수 계산이 본질적으로 더 빠르다고 가정하기 전에 특정 하드웨어와 워크로드를 평가하는 것이 중요합니다.
위 내용은 정수 계산이 최신 하드웨어의 부동 소수점 계산보다 여전히 더 빠릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!