経験から発見したことについて説明が必要です。char 型の非常に大きなフラット配列があります。配列は合計で 500x500x500 = 125E+6 バイトの長さです。セル内には 0 から 255 までの数値を保持しています。しかし幸いなことに、配列を走査するときは、ゼロ以外の値を持つセルにのみ関心があります。
ここで質問です。実験の結果、セルに対して最小の操作を行うだけでも、ゼロ配列と非ゼロ配列全体を処理するときに膨大な時間がかかることがわかりましたが、以下のような条件を使用すると、
while( index < 125000000 )
{
if( array[ index ] > 0 )
{
// Do some stuff
}
index++;
}
実行時間が大幅に短縮されます。実際、配列全体を調べて、ゼロ以外のセルに対する操作を数秒で実行できます。条件のないアプローチの 30 分の実行時間ではありません。
私が必要としているのは、これが機能する理由の説明です! 論文レポートでこの現象を説明する必要があり、科学論文などに関連付けることができれば最善です。
前もって感謝します!
よろしく、 オミッド・アリヤン