0

次のようなプログラムがあります。

int i;

double* a = new double [2];

for(i=0;i<1000000;i++)
{
    a[0] = 1.1231;
    a[0] = 1.1231;
    a[0] = 1.1231;
    ..
}

行 a[0] = 1.1231; 手動で 10.000 回コピーされたため、コマンドは 10.000.000.000 回呼び出されます。この実行には 8.7 秒かかります。ただし、ループを 10.000.000 回実行し、ステートメントを手動で 1.000 回コピーすると (同じ数の配列割り当てで、レイアウトが異なるだけです)、実行時間は 3 秒になります。どうすればいいの?-O0 でコンパイルしています。コンパイラの最適化を無効にするために他に何かする必要がありますか? プログラムを最適化し、さまざまなコンテナーのパフォーマンスを比較しているため、質問しています...

ありがとう!

4

0 に答える 0