我应该用什么参考器来测量_real_时间(包括等待SYSCALLS)在此功能上花费,而不是_cpu_

StackOverflow https://stackoverflow.com/questions/3992587

该应用程序不计算事物,而是I/O,读取文件,使用网络。我希望探索者展示它。

我期望像CallGrind中的类似内容,可以调用Clock_getTime每个Proble。

或喜欢的oprofile 中断 我的应用程序(当它睡觉或等待套接字/文件/white时)查看它在做什么。

我想要诸如“读”,“连接”,“纳米腿”,“发送”,尤其是“ fsync”之类的东西(和他们所有的呼叫者)是粗体(不是执行计算的字符串或数字函数)。

平台:gnu/linux @ i386

有帮助吗?

解决方案

迅速为Linux入侵了琐碎的抽样探测器: http://vi-server.org/vi/simple_sampling_profiler.html

它附加 backtrace(3) 到文件上 SIGUSR1, ,然后将其转换为注释源。

当它定期探究程序时,我们将看到等待某些东西的功能。

当它走上堆栈时,我们也会看到呼叫者。

从回答到类似问题的人们也建议Zoom。

其他提示

在不知道您的平台的情况下,没有真正的方法可以回答这个问题,还有更多关于您要做的事情的方法。

当我在英特尔平台上运行时,我喜欢使用 时间邮票计数器(RDTSC). 。在亚微秒范围内击败重新估计很难。我只是在大量代码之前和之后打电话给它,然后比较差异。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top