Optimization 哪个更快:!=或<;
以下哪项更快Optimization 哪个更快:!=或<;,optimization,Optimization,以下哪项更快 for (int i = 0; i < n; ++i) 我想知道,因为我不了解硬件,因此也不了解计算机如何看待原始类型的,这两种操作所用的时间完全相同,因为无论您要求什么,这两种操作实际上都是确定的 简言之,无论何时进行基本比较,==或=,运算符的一侧从另一侧减去。然后使用减法的结果设置许多标志,其中最重要的标志是Z(零)、N(负)和O(溢出)。根据这些名称,您应该能够弄清楚每个标志代表什么。例如:如果减法结果为零,则设置Z标志。因此,无论您是否要求,这些指令都会编译成完全
for (int i = 0; i < n; ++i)
我想知道,因为我不了解硬件,因此也不了解计算机如何看待原始类型的
,这两种操作所用的时间完全相同,因为无论您要求什么,这两种操作实际上都是确定的
简言之,无论何时进行基本比较,=
=
或=代码>,运算符的一侧从另一侧减去。然后使用减法的结果设置许多标志,其中最重要的标志是Z
(零)、N
(负)和O
(溢出)。根据这些名称,您应该能够弄清楚每个标志代表什么。例如:如果减法结果为零,则设置Z
标志。因此,无论您是否要求,这些指令都会编译成完全相同数量的机器指令——相等时跳转和更少时跳转都是单个汇编指令。您可以在此处阅读这些说明:如果将循环体中的i
的值更改为大于n
的值,则比较(如果满足特定条件,可能需要将i
增加两次,这可能发生在最后一次迭代中),或者将n
更改为小于i
,则第二个版本(带有!=
)循环将不会终止
如果要迭代n次
,则第一个版本(<<代码>)不仅仅是硬件。有太多的因素。最好自己尝试测量性能。也考虑bug的影响。如果代码中有bug,这两种结构都可以永远循环。哪种类型的bug更容易避免,更容易发现和更容易修复?你不需要这样的级别。性能。为了可读性,你应该使用第一个,因为如果i>na,第二个将不起作用。你在说什么语言、编译器、体系结构等差异将是如此之小,以至于你不应该在意。我从语法上假设这是C++
问题。如果n==-1
顶部循环执行零次,但底部循环数十亿次。因此,从统计上讲,我猜最重要的一个是,在n
的所有值上,速度更快!;-)
for (int i = 0; i != n; ++i)