内存不足错误。分配...
我正在尝试使用 gprof 命令:gprof -sexecutable.exe gmon.out gmon.sum
来合并从两次运行程序中收集的分析数据。但出现以下错误:
gprof:在总共 196608 字节之后分配 3403207348 字节时内存不足
我的程序非常简单(只有一个 for
循环)。如果我运行一次,运行时间太短(显示 0.00 秒),gprof 无法记录。
在 CygWin 中,我执行以下步骤:
gcc -pg -o fl forAndWhilLoop.c
fl(运行程序)
mv gmon.out gmon.sum
fl(运行程序)
gprof -s fl .exe gmon.out gmon.sum
gprof fl.exe gmon.sum>gmon.out
gprof fl.exe
我的程序:
int main(void)
{
int fac=1;
int count=10;
int k;
for(k=1;k<=count;k++)
{
fac = fac * k;
}
return 0;
}
那么有人可以帮我解决这个问题吗?谢谢!
I'm trying to use a gprof command: gprof -s executable.exe gmon.out gmon.sum
to merge profiling data gathered from 2 runs of my programs. But the following error appears:
gprof: out of memory allocating 3403207348 bytes after a total of 196608 bytes
My program is quite simple (just one for
loop). If i run it once, the run time is too short (it shows 0.00s) for gprof to record.
In CygWin, I do the following steps:
gcc -pg -o fl forAndWhilLoop.c
fl (run the program)
mv gmon.out gmon.sum
fl (run the program)
gprof -s fl.exe gmon.out gmon.sum
gprof fl.exe gmon.sum>gmon.out
gprof fl.exe
My program:
int main(void)
{
int fac=1;
int count=10;
int k;
for(k=1;k<=count;k++)
{
fac = fac * k;
}
return 0;
}
So can anyone help me with this problem? Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您只想计时,在我的机器上它是105ns。这是代码:
明白了吗?我使用了手持秒表。由于它运行 10^9 次,因此秒 = 纳秒。
像这样展开内循环将时间减少到92ns;
从调试切换到发布版本将其降低到21ns。您只能期望在实际热点中实现这种加速,这就是。
If all you want is to time it, on my machine it's 105ns. Here's the code:
Get the idea? I used a hand-held stopwatch. Since it runs 10^9 times, seconds = nanoseconds.
Unrolling the inner loop like this reduced the time to 92ns;
Switching to Release build from Debug brought it down to 21ns. You can only expect that kind of speedup in an actual hotspot, which this is.
看来应该执行 pprof 而不是 gprof
It seems that pprof instead of gprof should be executed