我有一些代码可以用g ++编译.然后我做了一些更大的数组:
complex<double> densop[a][b][c]
Run Code Online (Sandbox Code Playgroud)
其中a = b = 400,g = 500.当我编译时
g++ -L/.../gsl -I/../gsl -O2 -lgsl -lgslcblas -Wall -o sim1 sim1.cp
Run Code Online (Sandbox Code Playgroud)
编译器挂起(5h +),没有额外的警告,而不是它编译的情况.
我认为它可能是内存,但顶部显示CPU运行在100%,%MEM约为一半.顺便说一下,我还全局声明了这个数组,以便它在堆栈上不会很重.
编译好的情况和不兼容的情况之间的另一个不同之处是当我#include两个数据文件时,在第二种情况下更大(30和15 MB).
gcc版本4.1.2,内存30GB.尝试使用-O0和-O2标志.
先感谢您!
我确实看到了在将大型常量数据数组解析为C++源代码时g ++性能较差的情况.一种改进方法是将大数据数组存储在输入文件中,并在程序启动时将它们加载到内存中.这将以运行时少量启动处理为代价来修复编译性能问题.
请注意,即使您的常量数组编译运行,它们仍然需要complex<double>几百万次调用构造函数,因此从文件中读取可能不会花费太多.
| 归档时间: |
|
| 查看次数: |
1853 次 |
| 最近记录: |