结构中的std :: complex使编译变慢

时间:2017-06-15 22:33:19

标签: c++

我注意到以下代码编译速度极慢:(它甚至无法在我的计算机上完成)

#include <complex>

struct some_big_struct {
    std::complex <double> a[1000000][2];
};

some_big_struct a;

int main () {
    return 0;
}

出于好奇,我还尝试了其他代码替代方案。但是,这些代码似乎在我的计算机上编译得很好:

#include <complex>

struct some_big_struct {
    double a[1000000][2];
};

some_big_struct a;

int main () {
    return 0;
}

#include <complex>

std::complex <double> a[1000000][2];

int main () {
    return 0;
}

我想知道是否有人可以就这种情况分享原因。谢谢!

1 个答案:

答案 0 :(得分:3)

编译器可能在编译时运行默认的std::complex构造函数,因此它可以将所有数组成员的初始化值放入可执行文件中,而不是生成在程序启动时执行此循环的代码。因此,它在编译时会将构造函数调用200万次。