我有一个C++代码,它有3个数组声明.
float A[NUM];
float B[NUM];
float C[NUM];
当我编译时NUM=512,编译很快
time g++ -DNUM=512 trials trials.cpp -lm
0.16s user 0.04s system 94% cpu 0.219 total
NUM=167772160
time g++ -DNUM=167772160 trials trials.cpp -lm
7.90s user 0.69s system 99% cpu 8.604 total
但是,当我编译时
float A[NUM];
float B[NUM];
float C[NUM];
,需要更多时间.
NUM=512
time g++ -DNUM=512 trials trials.cpp -lm
0.16s user 0.04s system 94% cpu 0.219 total
NUM=167772160
我多年没用过C++了.我很想知道为什么编译时存在时间差,尽管编译后的目标文件大小相同.
seh*_*ehe 10
这是一个众所周知的难题.在此过程中的某个地方,将分配数组的实际内存
请参阅: 与交换空间相关的链接器性能?
看起来,正如我们可能怀疑的那样,看起来ld实际上是试图匿名mmap这个数组的整个静态内存空间(或者可能是整个程序,因为程序的其余部分很小,所以很难说,它可能都适合那个额外的4096).
还有关系:
| 归档时间: |
|
| 查看次数: |
283 次 |
| 最近记录: |