我需要对我从经验中发现的东西作出解释。我有一个非常大的字符类型的平面数组。该数组总共有 500x500x500 = 125E+6 字节长。在单元格内,我保留了一个介于 0 和 255 之间的数字。但幸运的是,在遍历数组时,我只对具有非零值的单元格感兴趣!
现在问题来了。我通过实验发现,在遍历整个零和非零数组时,即使对单元格进行最小的操作也会花费大量时间,而如果我使用类似于下面的条件,
while( index < 125000000 )
{
if( array[ index ] > 0 )
{
// Do some stuff
}
index++;
}
执行时间大大缩短。事实上,我可以在几秒钟内遍历整个数组并在非零单元格上执行我的操作,而不是在没有条件的情况下执行半小时的方法。
我需要的是解释为什么会这样!我需要在我的论文报告中解释这种现象,如果我能与一篇科学论文或类似论文相关,那将是最好的。
先感谢您!
最好的问候, 奥米德·阿里扬