作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想测量在 Linux 中花费在 C 函数上的总时间。不同线程可能同时调用该函数,花费的时间应该加在一起。我如何从 Linux 进行这种测量?我查看了 clock()
函数并计算了函数开始和结束之间的差异。
我在 Stackoverflow 的这个线程中找到了一个使用 clock()
的解决方案: How to measure total time spent in a function?
但据我了解,这还包括在测量期间来自线程的 CPU 处理执行一些其他功能。这是一个正确的假设吗?
在 Linux 中是否有其他方法可以进行这种测量?
最佳答案
您的问题表明您正在使用 Linux。
您可以使用 getrusage(2)使用 RUSAGE_THREAD
参数进行系统调用,这将为您提供当前运行线程的累积统计信息。
通过比较 ru_utime
和 ru_stime
中的内容,在函数运行前后,您应该能够确定函数在 CPU 中累积了多少时间时间,对于当前正在运行的线程。
起泡、冲洗、重复所有线程,然后将它们加起来。
关于c - 如何在 Linux 多线程环境中测量函数的总执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43232157/
我是一名优秀的程序员,十分优秀!