就是下面代码在4种情况下的计算速度:(编译器vs2015,x64)
1. a,b都是double*, debug模式: 0.0024秒
2. a,b都是double*, release模式:0.0035秒
3. a,b都是vector<double>,debug模式: 0.46 秒
4. a,b都是vector<double>,release模式:0.0009秒。
我觉得奇怪的是:4为什么比2快;1为什么比2快。(速度是多次测试取的平均,每次测试的速度都差不多)
有哪位能解释一下?
int main()
{
int N = 1000000;
vector<double> a(N);
vector<double> b(N);
//double* a = new double[N];
//double* b = new double[N];
LARGE_INTEGER cf, cs, ce;
QueryPerformanceFrequency(&cf);
for (int i = 0; i < N; ++i)
{
a[i] = i;
}
QueryPerformanceCounter(&cs);
for (int i = 0; i < N; ++i)
{
b[i] = a[i] * a[i];
}
QueryPerformanceCounter(&ce);
printf("%g, %g, %g\n", b[0], b[int(N / 2)], b[N-1]);
printf("%g\n", (ce.QuadPart - cs.QuadPart) / double(cf.QuadPart));
}
--
FROM 115.171.203.*