gpt4 book ai didi

c - 如何测量一段程序的用户/系统 cpu 时间?

转载 作者:太空宇宙 更新时间:2023-11-04 00:51:59 26 4
gpt4 key购买 nike

在经典 APUE(UNIX 环境中的高级编程)的第 3.9 节中,作者测量了他的示例程序(一个 I/O 读/写程序)运行在不同缓冲区大小下所消耗的用户/系统时间。

结果表有点像(所有时间都以秒为单位):

BUFF_SIZE  USER_CPU   SYSTEM_CPU  CLOCK_TIME  LOOPS
1 124.89 161.65 288.64 103316352
...
512 0.27 0.41 7.03 201789
...

我很好奇并且真的很想知道如何测量一段程序的用户/系统 CPU 时间?

在这个例子中,CLOCK TIME 是什么意思,如何测量它?

显然它不仅仅是用户 CPU 时间和系统 CPU 时间的总和。

最佳答案

您可以使用 *nix 下的 time 命令轻松测量程序的运行时间:

$ time myprog

real 0m2.792s
user 0m0.099s
sys 0m0.200s

realCLOCK_TIME 指的是挂钟时间,即从程序开始到结束所用的时间,甚至包括其他进程所用的时间片内核上下文切换它们。它还包括任何时候,进程被阻塞(在 I/O 事件上等)

userUSER_CPU 是指花费在用户空间(即内核外部)的 CPU 时间。与 real 时间不同,它仅指特定进程占用的 CPU 周期。

sysSYSTEM_CPU 是指在内核空间中花费的 CPU 时间(作为系统调用的一部分)。同样,这只是计算代表进程在内核空间中花费的 CPU 周期,而不是它被阻塞的任何时间。

time 实用程序中,usersys 是根据 times() 计算的或 wait()系统调用。 real 通常使用 gettimeofday() 收集的 2 个时间戳中的时间差来计算程序开始和结束时的系统调用。

您可能想知道的另一件事是 real != user + sys。在多核系统上,usersys 或它们的总和很容易超过 real 时间。

关于c - 如何测量一段程序的用户/系统 cpu 时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15427137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com