我目前正在使用 min-gw GCC 分析器工具 gprof
来查找我的代码中速度较慢的部分。我用
gcc -p -pg -o3 example.c -o example.exe
运行完我用的文件
gprof example.exe > data.txt
我的程序打印出来的运行时间是~8秒,但是data.txt只显示了我程序的功能,占了3.47秒。我想象未被计算的时间用在了其他C函数中,比如malloc
、free
等,但我仍然需要知道时间被用在了哪里。有什么想法吗?
最佳答案
gprof 与大多数其他分析器样本一起,而不是提供准确的结果,因此您获得的时间完全有可能少于实际执行时间。进一步gprof,根据this只关心程序内部的代码,而不关心调用的任何其他库函数,因此这也是一个因素。
尝试使用 valgrind 和 callgrind 工具进行性能分析。它非常好且直观,您可以使用多种其他工具将其可视化。
您可以使用的另一件事是 gperftool它可以附加到进程并向您显示大部分时间花在了哪里(以百分比表示)。
有非常好的专有分析器,例如 Intel vTune但根据我的经验,我从未使用 gperftools 找不到我需要的东西。
关于c - GCC Profiler,时间不详,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29149088/