【发布时间】:2009-05-26 12:28:41
【问题描述】:
我正在做一些编码,我必须编写这种代码:
if( array[i]==false )
array[i]=true;
不知道是不是应该改写成
array[i]=true;
这就提出了一个问题:比较比分配快吗?
语言之间的差异如何? (例如 java 和 cpp 的对比)
注意:我听说“过早的优化是万恶之源”。我认为这不适用于这里:)
【问题讨论】:
-
除非您正在为处理器非常慢的嵌入式系统编写程序,否则您不必担心。即使在那个时候你也不愿意手动优化
-
array[i] 可以是 bool 以外的任何东西吗?如果不是,那么重写是正确的。
-
是的,该数组是一个布尔数组。
-
对于所有发布“意见”的人,关于什么更快以及为什么更快,请停止。了解给定处理器上给定编译器更快的唯一方法是对其进行基准测试。意见不计入可以衡量和测试的地方。对提问者来说,这不是什么可担心的事情,但如果你必须担心,那么测试它超过 1,000,000 次迭代,获得几次运行的平均时间,改变它,看看有什么不同。从理论上讲,一个可能比另一个更快,但对于原始数据类型,它们实际上是相同的。
-
@Binary Worrier:你怎么知道 1000000 次迭代是数组的正确大小?对于现代处理器,避免缓存未命中是重要的部分,而不是计算指令周期。因此,基准测试应该以实际的数据大小运行。
标签: performance optimization refactoring