c++ - 按事件类型分析程序

标签 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.

有这样的分析器吗?是否可以从“标准”分析器中得出这样的输出?

我使用的是 Linux,但我很高兴听到任何适用于其他系统的解决方案。

最佳答案

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

关于c++ - 按事件类型分析程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4937656/

相关文章:

c++ - 发送 3 字节数据到 OpenGL GLSL

c# - 如何在本地修改纹理?

c++ - 在列表中调用子对象

java - 我完全从内存运行算法(无 IO),但我的 CPU 使用率低于 25%。可能的瓶颈是什么?

c - C - 跨平台中函数的毫秒精度计时

c++ - 我可以在 C++ 中创建匿名类并像在 Java 中一样捕获外部变量吗?

c++ - 表示任何 double 值所需的最大字符长度是多少?

c - 为什么这段代码不返回垃圾值?

java - 归并排序的开放区间的中点

postgresql - 如何分析 plpgsql 程序