这个问题是关于内存和性能之间的权衡。
我在 Linux 上做 C++。
for_loop () 是时间关键路径。我正在尝试尽可能减少它的运行时间。
myArray.assignMemory(); // the memory will be 50KB.
if (myFlag)
myArray is assigned meaningful values
else
myArray is assigned NotNumber (a very small negative number)
for_loop ( iterationNumber = N) { // N will be very large
myF1 ( myArray[i] ) ;
}
myF1(double j){
if(myFlag)
use j
else
doNothing
}
在这里,即使 myFlag 为 false,也将内存分配给 myArray,在这种情况下,内存被浪费了。但是,如果我将 if(myFlag) 放在 for_loop 中,这将产生性能开销。
我可以将 if(myFlag) 放在 for_loop 之外,这样如果 myFlag 为真,我们就运行 myF1(myArray[i]),否则,我们运行 myF1(notNumber)。但是,这会有重复。
所以,我的问题是:还有其他更好的方法可以在不浪费任何内存的同时不增加性能开销吗?
谢谢