c - 在 clock_gettime 中使用 CLOCK_PROCESS_CPUTIME_ID

标签 c linux

我读了http://linux.die.net/man/3/clock_gettimehttp://www.guyrutenberg.com/2007/09/22/profiling-code-using-clock_gettime/comment-page-1/#comment-681578

据说用这个来

clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &stop_time);

测量函数运行所需的时间。

我在我的程序中试过了。当我运行它时,它返回说它花了 15 秒。但是当我用秒表测量它时,它是 30 秒。

你能告诉我为什么 clock_gettime 返回实际花费时间的 1/2 吗?

谢谢。

最佳答案

在多进程环境中,进程不断从 CPU 迁移到“运行队列”。

在对应用程序进行性能测试时,了解进程在 CPU 上运行的时间通常很方便,同时排除进程在“运行队列”上等待 CPU 资源的时间。

在这个问题的情况下,CPU 时间大约是实时时间的一半,很可能其他进程正在积极竞争 CPU 时间,而您的进程也在运行。看来您的进程在其运行期间相当成功地获取了大约一半的 CPU 资源。

您可以考虑使用 CLOCK_REALTIME,而不是使用 CLOCK_PROCESS_CPUTIME_ID?

有关更多详细信息,请参阅:Understanding the different clocks of clock_gettime()

关于c - 在 clock_gettime 中使用 CLOCK_PROCESS_CPUTIME_ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23483261/

相关文章:

python - 在 dbus 中模拟网络存在

linux - Shell:如何检查可用空间并在空间不足时退出?

c - UTF-16 文件无法正确打印

在终端(Trutle 模块)中执行 Python 脚本错误

c 编程输入最后一个元素是@

c - 当什么都不执行时,是否有可以使用的虚拟左值?

python - GDAL (CentOS 8) 安装失败

python - 您如何跨多个操作系统手动告诉 Python 在脚本本身中使用哪个版本?

C - 以十六进制打印出一个字符指针给我奇怪的结果

c++ - 您如何使用 WinHTTP 通过自签名证书执行 SSL