我有一个看起来像这样的程序:
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进行编译。我需要做些什么才能禁用编译器优化?我问,因为我正在优化一个程序,我正在比较不同容器的性能......
谢谢!