gpt4 book ai didi

performance - "Jump if zero"(jz) 更快吗?

转载 作者:行者123 更新时间:2023-12-03 16:15:29 25 4
gpt4 key购买 nike

我在看 this article ,我注意到 jz操作说明。这让我想到:

请问这段代码的汇编

for (int i=max;i!=0;--i){
//Some operation
}

胜过这段代码的汇编?
for (int i=0;i<max;++i){
//Some operation
}

只要你不关心你的数据被处理的越来越多 i ,没有语义差异。缓存未命中也不应该受到影响,因为它们可以以任何方式顺序工作。

我不太擅长汇编来编写示例,但我认为第一个示例只会使用 jz .第二个将使用 cmp ,然后是 jg ,并且还需要另一个变量, max .第一个例子只需要循环计数器,因为 0是隐含的。

这也可能是编译器已经用来优化的东西,但我可以想象它无法进行优化的情况。

最佳答案

假设我们有 cmp a,b .

处理器将临时减去操作数(不影响它们的值),正确设置标志,然后您的 jmp跳转操作被评估。

因此,在您的示例中制作 jz 会更快,而不是 cmp和一个 jmp .

关于performance - "Jump if zero"(jz) 更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25678692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com