g++在编译时挂起

g++ hangs when compile

本文关键字:挂起 编译 g++      更新时间:2023-10-16

我有一小段代码可以用g++很好地编译。然后我把一些数组变大:

complex<double> densop[a][b][c] 

其中a=b=400, g=500。当我用

编译时
g++ -L/.../gsl  -I/../gsl -O2 -lgsl -lgslcblas  -Wall -o sim1 sim1.cp 

编译器挂起(5h+),与编译时相比没有额外的警告。

我认为它可能是内存,但顶部显示CPU运行在100%和%MEM大约一半。顺便说一句,我还全局声明了这个数组,这样它就不会对堆栈造成沉重的负担。

另一个不同的情况是,当我#包含两个数据文件时,第二个情况更大(30和15 MB)。

gcc版本4.1.2,内存30GB。尝试使用- 0和-O2标志。

提前感谢!

我确实看到过c++在将大型常量数据数组解析为c++源代码时性能很差的情况。一种改进方法是将大数据数组存储在输入文件中,并在程序启动时将它们加载到内存中。这将修复编译性能问题,但代价是在运行时进行少量的启动处理。

请注意,即使您的常量数组编译并运行,它们仍然需要调用complex<double>构造函数数百万次,因此从文件中读取可能不会花费太多。