g ++在编译时挂起

时间:2014-07-22 23:01:31

标签: c++ gcc

我有一些代码可以用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约为一半。顺便说一句,我还全局声明了这个数组,这样它就不会在堆栈上很重。

另一个在编译好的情况之间不同的是,当我#include两个数据文件时,在第二种情况下更大(30和15 MB)。

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

提前谢谢!

1 个答案:

答案 0 :(得分:5)

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

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

相关问题