有构造函数会使计算速度变慢

我非常困惑,有一件事......如果我将构造函数添加到结构A中,那么在for循环中计算会变慢很多倍。 为什么? 我不知道。

在我的电脑中输出片段的时间是:

带构造函数:1351

没有构造函数:220

这是一个代码:

#include <iostream>
#include <chrono>
#include <cmath>

using namespace std;
using namespace std::chrono;

const int SIZE = 1024 * 1024 * 32;

using type = int;

struct A {
    type a1[SIZE];
    type a2[SIZE];
    type a3[SIZE];
    type a4[SIZE];
    type a5[SIZE];
    type a6[SIZE];

    A() {} // comment this line and iteration will be twice faster
};

int main() {
    A* a = new A();
    int r;
    high_resolution_clock::time_point t1 = high_resolution_clock::now();
    for (int i = 0; i < SIZE; i++) {
        r = sin(a->a1[i] * a->a2[i] * a->a3[i] * a->a4[i] * a->a5[i] * a->a6[i]);
    }
    high_resolution_clock::time_point t2 = high_resolution_clock::now();

    cout << duration_cast<milliseconds>(t2 - t1).count() << ": " << r << endl;

    delete a;

    system("pause");
    return 0;
}

但是,如果我从for循环中删除sin()方法,如下所示:

for (int i = 0; i < SIZE; i++) {
    r = a->a1[i] * a->a2[i] * a->a3[i] * a->a4[i] * a->a5[i] * a->a6[i];
}

移除构造函数并不重要,执行时间也是一样的,等于78。

你对这段代码有类似的行为吗? 你知道这个的原因吗?

编辑:我编译它与Visual Studio 2013

链接地址: http://www.djcxy.com/p/85717.html

上一篇: Having constructor makes slower calculation

下一篇: Why write 1,000,000,000 as 1000*1000*1000 in C?