我注意到以下代码编译速度极慢:(它甚至无法在我的计算机上完成)
#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;
}
我想知道是否有人可以就这种情况分享原因。谢谢!
答案 0 :(得分:3)
编译器可能在编译时运行默认的std::complex
构造函数,因此它可以将所有数组成员的初始化值放入可执行文件中,而不是生成在程序启动时执行此循环的代码。因此,它在编译时会将构造函数调用200万次。