c - GCC Profiler,时间不详

标签 c gcc profiler gprof

我目前正在使用 min-gw GCC 分析器工具 gprof 来查找我的代码中速度较慢的部分。我用

编译代码
gcc -p -pg -o3 example.c -o example.exe

运行完我用的文件

 gprof example.exe > data.txt

我的程序打印出来的运行时间是~8秒,但是data.txt只显示了我程序的功能,占了3.47秒。我想象未被计算的时间用在了其他C函数中,比如mallocfree等,但我仍然需要知道时间被用在了哪里。有什么想法吗?

最佳答案

gprof 与大多数其他分析器样本一起,而不是提供准确的结果,因此您获得的时间完全有可能少于实际执行时间。进一步gprof,根据this只关心程序内部的代码,而不关心调用的任何其他库函数,因此这也是一个因素。

尝试使用 valgrind 和 callgrind 工具进行性能分析。它非常好且直观,您可以使用多种其他工具将其可视化。

您可以使用的另一件事是 gperftool它可以附加到进程并向您显示大部分时间花在了哪里(以百分比表示)。

有非常好的专有分析器,例如 Intel vTune但根据我的经验,我从未使用 gperftools 找不到我需要的东西。

关于c - GCC Profiler,时间不详,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29149088/

相关文章:

c - 安西C :Is an array's name Stored as a pointer variable?

使用现有 C 源代码时出现 C++ 错误 C2440

c - GCC 生成的 64 位代码比 32 位代码慢 3 倍

java - 如何以编程方式使用 Netbeans Profiler?

java - VisualVM 堆转储与探查器不一致

c 中多维数组的编译器错误

c - 以编程方式监视 XP 上的 CPU 负载

c - 空或终止金丝雀

c - 使用 mmap 读取非惰性文件?

android-studio - android studio 3.0 中的 Kitkat 设备/google glass 不支持 Android profiler