gpt4 book ai didi

c - for循环执行时间不同条件

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:25 25 4
gpt4 key购买 nike

为什么是这样的代码:

for( i = 0, j = 0; i < 4 ,  j < 3; i++, j++)

 for( i = 0, j = 0; i < 4 &&  j < 3; i++, j++)

详细说明一些用户提出两个 if 语句比一个带有 && 运算符的 if 语句花费更多时间:我在没有 for 循环的情况下测试了它,但事实并非如此。两个 if 语句比一个带有 && 运算符的语句更快。

最佳答案

第一个代码并不慢;至少在 gcc 中没有优化。事实上,它应该更快

当你编译这两个代码并反汇编它们时,你会发现第一个代码是这样的:

cmpl   $0x2,-0x8(%rbp)
jle 26 <main+0x26>

这是第二个:

cmpl   $0x3,-0x4(%rbp)
jg 44 <main+0x44>
cmpl $0x2,-0x8(%rbp)
jle 26 <main+0x26>

在第一个例子中,gcc 只计算第二部分,因为第一部分没有效果,也没有用在比较中。在第二个中,它必须检查第一个,如果为真,则检查第二个。

因此,在一般情况下,第一个示例应该比第一个示例更快。如果您发现第一个速度较慢,那么您的测量方法可能不是 100% 正确。

关于c - for循环执行时间不同条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25544419/

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