> 백엔드 개발 > C++ > 부동소수점 나눗셈은 최신 CPU의 곱셈보다 정말 느린가요?

부동소수점 나눗셈은 최신 CPU의 곱셈보다 정말 느린가요?

Barbara Streisand
풀어 주다: 2024-12-21 13:09:09
원래의
424명이 탐색했습니다.

Is Floating-Point Division Really Slower Than Multiplication in Modern CPUs?

부동 소수점 나눗셈과 곱셈의 성능 영향

부동 소수점 나눗셈은 곱셈보다 계산 속도가 느린 것으로 알려져 있습니다. 이 기사에서는 이 주장을 자세히 살펴보고 현대 PC 아키텍처에서 그 타당성을 조사합니다.

부동 소수점 연산에서 나눗셈은 시간 복잡도 측면에서 곱셈을 능가하는 경우가 많습니다. CPU는 일반적으로 1~2 클록 주기 내에 곱셈을 실행하는 반면 나눗셈은 더 긴 프로세스를 요구합니다.

성능 차이를 설명하기 위해 다음 코드 조각을 고려하십시오.

float f1 = 200f / 2;
// vs.
float f2 = 200f * 0.5;
로그인 후 복사

많은 경우, f2는 나눗셈에 대한 곱셈의 고유한 효율성으로 인해 더 빠르게 계산됩니다.

이러한 성능 차이는 더 복잡한 연산에서도 나타납니다. 예를 들어, 다음 루프는

float f1;
float f2 = 2;
float f3 = 3;
for(i = 0; i < 1e8; i++)
{
  f1 = (i * f2 + i / f3) * 0.5; //or divide by 2.0f, respectively
}
로그인 후 복사

나누기에는 반복 단계가 필요하므로 2.0f로 나누는 대신 0.5로 곱셈을 사용하여 더 효율적으로 실행됩니다.

상당한 성능 차이는 다음에서 비롯됩니다. 분할의 구조적 복잡성. 여러 개의 덧셈으로 변환하여 병렬화할 수 있는 곱셈과 달리 나눗셈은 병렬성이 떨어지는 연산인 반복적인 뺄셈을 포함합니다. 이를 보완하기 위해 일부 부동 소수점 단위는 역근사 및 곱셈을 사용하여 효율성을 위해 일부 정확도를 희생합니다.

위 내용은 부동소수점 나눗셈은 최신 CPU의 곱셈보다 정말 느린가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿