按活动类型分析程序

Ela*_*ich 8 c c++ profiling

典型分析器的输出是代码中的函数列表,按程序运行时每个函数所用的时间量排序.

这是非常好的,但有时我对程序在大多数时间做的事情感兴趣,而不是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.
Run Code Online (Sandbox Code Playgroud)

有这样的探查器吗?是否有可能从"标准"分析器中获得这样的输出?

我正在使用Linux,但我很高兴听到其他系统的任何解决方案.

Mar*_*k B 1

这仅适用于 Solaris,但 dtrace 可以监视几乎所有类型的 I/O、CPU 开/关、特定功能的时间、睡眠时间等。我不确定它是否可以确定缓存未命中,假设您指的是 CPU 缓存- 我不确定 CPU 是否提供该信息。