典型分析器的输出是代码中的函数列表,按程序运行时每个函数所用的时间排序。
这很好,但有时我更感兴趣的是程序大部分时间在做什么,而不是 EIP
大多数时间在哪里。
我假设的分析器的示例输出是:
Waiting for file IO - 19% of execution time.
Waiting for network - 4% of execution time
Cache misses - 70% of execution time.
Actual computation - 7% of execution time.
有这样的分析器吗?是否可以从“标准”分析器中得出这样的输出?
我使用的是 Linux,但我很高兴听到任何适用于其他系统的解决方案。
最佳答案
这仅适用于 Solaris,但 dtrace 可以监控几乎所有类型的 I/O、开/关 CPU、特定功能的时间、 sleep 时间等。我不确定它是否可以确定缓存未命中,假设你意味着 CPU 缓存 - 我不确定 CPU 是否提供该信息。
关于c++ - 按事件类型分析程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4937656/