다음 두 코드 중 가장 빠른 x86_64 코드 조각은 무엇입니까? 아니면 전혀 차이가 있습니까?x86 - 명령어 수준의 병렬 처리 - 최적의 명령어 순서
; #1
bsf rax, rdi
mov rdx, -1
cmove rax, rdx
대
; #2
mov rdx, -1
bsf rax, rdi
cmove rax, rdx
(또는 레지스터와 경제적 # 1에 대한 대안.
; #1a
bsf rax, rdi
mov rdi, -1
cmove rax, rdi
)
그리고 그래, 내가해야 그냥 벤치 마크를 알고 그러나 나는 도구가 없으며 현재의 장기간의 질병을 없애기 때문에 지금 상황을 설정할 수 없습니다.
자주 묻는 질문은 코드를 작성하고 여러 번 반복하여 타이밍을 맞추는 것이 가장 좋은 방법입니다. –
@DavidHoelzer : 저는 마이크로 벤치마킹이 어렵고 관련성이없는 이유로 한 버전이 다른 버전보다 빠르게 보일 수도 있습니다. 시퀀스의 대기 시간과 처리량이 다른 경우 오류가 발생하기 쉽습니다. 마이크로 벤치는 처리량을 테스트 할 수 있으며 실제 사용은 대기 시간에 민감합니다. 훌륭한 질문은 아니지만 답변은 "Agner Fog의 기사 읽기"가 아니라 "스스로 시간을 정하십시오"입니다. 내가 준 답을 모르는 사람에게는 운이 아닌 좋은 마이크로 벤치 마크를 쓸 수 없습니다. –