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