c++ - 剖析特定函数 C++

标签 c++ profiling

我研究了 gprof。但不太了解如何实现以下目标:

我写了一个聚类程序。在每次迭代中,重复调用 4 个函数。大约需要进行 100000 次迭代。我想知道每个功能花费了多少时间。
这些函数可能会调用其他子函数,并且可能涉及 HashMap 、映射等数据结构。但我不关心这些子函数。我只想知道在所有迭代中所有这些父函数总共花费了多少时间。这将帮助我更好地优化我的程序。

gprof 的问题在于,它会分析每个函数。因此,即使是 STL 数据结构的功能也被考虑在内。

目前我正在使用 clock_gettime。对于每个函数,我输出每次迭代所花费的时间。然后我操纵这个输出文件。为此,我必须输入大量分析代码。分析代码使我的代码看起来非常复杂,我想避免它。这在行业中是如何实现的?

有更简单的方法吗?

如果你有其他更干净的方法,请告诉我

最佳答案

如果我没理解错的话,您感兴趣的是您感兴趣的四个目标函数花费了多少时间,而不是这些函数调用的任何子函数。

此信息在 gprof 的“自秒”下的“平面”配置文件中提供。或者,如果您正在查看调用图,则此时间位于“self”列中。

关于c++ - 剖析特定函数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12104043/

相关文章:

ubuntu - VTUNE : Cannot display data

profiling - gprof 究竟是如何工作的?

python - 使用 PyCharm 分析 Django

c++ - 避免模​​棱两可的部分特化

c++ - 凹壳取边界上多边形的所有点

c++ - 你如何调试 MinGW 异常处理?

c++ - 在 QuickFIX/C++ 中将 UtcTimeOnly 转换为毫秒

c++ - 封装一个 C 风格的缓冲区

java - 执行时间和处理时间波动

java - Java 堆分析工具的推荐?