我有一个 while 循环,我只想在其中执行一次特定操作,并为所有其他循环运行不同的操作。
while (..) {
if ( 0 == count ) {
// do_this
} else {
// do_that
}
count++;
}
在这里,只count
需要比较0
一次,但在每次循环运行中都不必要地进行比较。有没有另一种方法,比较只发生一次,一旦成功就不会再次调用?
要么在循环之前做这件事count == 0
,要么如果那不可能(因为它在其他正在做的事情的中间),只需编写你的代码以供人类阅读,任何半体面的编译器都会为你解决这个问题。或者它不会弄明白,CPU 中的分支预测器会完成这项工作。无论哪种方式,像这样的纳米优化很可能会花费您更多的时间来阅读代码,而不是您节省的执行时间。
{
// do_this
}
count = 1; /*assuming count previously started at zero*/
while (..) {
// do_that
count++; /*although some folk prefer ++count as it's never slower than count++*/
}
更好
不要进行不必要的优化!
比较的成本是 1-2 个时钟周期,正如 Art 所提到的,它可以被编译器优化掉。与从文件读取的成本相比,成本绝对可以忽略不计。无论如何,程序的性能都会受到 I/O 的限制(内存读取或磁盘读取取决于文件是否映射到内存中)。
在这种情况下,您应该编写代码以便于维护。