以下两个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:我不同意:microbenchmarking很难,一个版本因为某些不相关的原因很容易会比另一个更快。当序列的延迟和吞吐量不同时,它也很容易出错。微型平台可能会测试吞吐量,而实际使用对延迟敏感。这不是一个很好的问题,但答案只是“阅读Agner Fog的东西”,而不是“自己试试”。如果你不知道我给出的答案,除了运气之外,你将无法写出一个好的微型基准。 –