典型的探查器的输出是代码中的函数列表,按程序运行时每个函数所花费的时间进行排序。

这非常好,但是有时候我对程序大部分时间都感兴趣,而不是对大多数时间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/

10-10 19:37