gpt4 book ai didi

gprof - 内存不足错误。正在分配...

转载 作者:行者123 更新时间:2023-12-02 05:14:20 26 4
gpt4 key购买 nike

我正在尝试使用 gprof 命令:gprof -s executable.exe gmon.out gmon.sum合并从我的程序的 2 次运行中收集的分析数据。但是出现以下错误:

gprof: out of memory allocating 3403207348 bytes after a total of 196608 bytes



我的程序非常简单(只有一个 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;
    }

    那么有人可以帮我解决这个问题吗?谢谢!

    最佳答案

    如果您只想计时,在我的机器上是 105ns .这是代码:

    void forloop(void){ 
    int fac=1;
    int count=10;
    int k;

    for(k=1;k<=count;k++)
    {
    fac = fac * k;
    }
    }

    int main(int argc, char* argv[])
    {
    int i;
    for (i = 0; i < 1000000000; i++){
    forloop();
    }
    return 0;
    }

    明白了吗?我用的是手持秒表。由于它运行了 10^9 次,因此秒 = 纳秒。

    像这样展开内循环将时间减少到 92ns ;
    int k = 1;
    while(k+5 <= count){
    fac *= k * (k+1) * (k+2) * (k+3) * (k+4);
    k += 5;
    }
    while(k <= count){
    fac *= k++;
    }

    从 Debug 切换到 Release 版本使其下降到 21ns .您只能期望在实际热点中实现这种加速,这就是。

    关于gprof - 内存不足错误。正在分配...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2175919/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com