> 백엔드 개발 > C++ > '인가?

'인가?

Barbara Streisand
풀어 주다: 2024-12-18 15:35:09
원래의
809명이 탐색했습니다.

Is the '

비교는 '<' '<='보다 빠름?

복잡한 루프 코드와 관련된 특정 시나리오에서는 '<' 연산자는 '<=' 연산자보다 빠를 수 있습니다. 이 주장을 조사하기 위해 이러한 비교를 위해 생성된 기본 기계 코드를 살펴보겠습니다.

코드 생성

x86 아키텍처에서 적분 비교는 일반적으로 두 개의 기계 명령어를 사용하여 구현됩니다.

  1. 테스트 또는 cmp 명령: 테스트 결과를 나타내는 다양한 상태 비트로 EFLAGS 레지스터를 설정합니다. 비교.
  2. jcc(점프) 명령: EFLAGS를 확인하고 이에 따라 분기합니다.

'<' 및 '<=' 비교에서는 첫 번째 명령어(cmp)가 동일합니다. 차이점은 두 번째 명령에 있습니다.

  • '<': jge, 보다 크거나 같으면 점프
  • '<=': jg, 더 크면 점프

실행 시간

실행 시간은 대기 시간과 처리량에 따라 결정됩니다. jge 및 jg 명령어의 경우 0사이클의 동일한 대기 시간과 0.5사이클의 처리량을 갖습니다. 이는 실행하는 데 동일한 시간이 소요된다는 것을 의미합니다.

부동 소수점 비교

fucomip 명령어를 사용하는 x87 부동 소수점 비교에도 동일한 원칙이 적용됩니다. EFLAGS 레지스터를 확인하는 데 사용되는 seta 및 setae 명령어도 실행하는 데 동일한 시간이 걸립니다.

결론

대부분의 아키텍처에서 '<' 및 '<=' 연산자는 정수 및 부동 소수점 비교에 대해 동일한 실행 시간을 갖습니다. '<'라는 가정 일반적인 경우에는 더 빠를 수도 있다는 것은 잘못된 것입니다.

위 내용은 '인가?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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