在 Unix 中解释程序的文字 运行 时间
Interpreting Literal Run Time of a Program in Unix
我运行一个C程序(table.c)使用命令:
time table
给我 运行 时间,我得到了:
0.104u 1.179s 0:01.31 96.9% 0+0k 0+48io 0pf+0w
我有几个问题:
Q1:这一切是什么意思?
问题 2:为什么每次执行我的程序时这些数字都在变化?
Q1: What does all this mean?
第一个值 (u
) 是您的程序在 user 上下文中花费的时间。也就是说,你的代码花了多长时间 运行ning.
第二个值 (s
) 是您的程序在 系统 上下文中花费的时间。意思是,在您的程序执行期间,它在内核中花费了多长时间来处理您的程序发出的系统调用。
第三个值是您的程序 运行 的总时间,包括 user、system 和 睡觉 未显示。
我相信如果你算一下,你会发现你的程序是 运行ning(而不是 sleeping ) 96.9% 的时间从开始到结束。
Q2: Why are these numbers changing every time I execute my program?
因为你运行正在使用一个真正的桌面系统,使用抢占式操作系统,所以也运行正在其他程序,并处理硬盘等外部事件activity和网络流量。您不可能期望程序每次都以 完全 相同的时间 运行。 1
1 - 对于经常用于嵌入式系统的专门设计的 "Real-Time OS",情况并非如此,例如汽车。
我运行一个C程序(table.c)使用命令:
time table
给我 运行 时间,我得到了:
0.104u 1.179s 0:01.31 96.9% 0+0k 0+48io 0pf+0w
我有几个问题:
Q1:这一切是什么意思?
问题 2:为什么每次执行我的程序时这些数字都在变化?
Q1: What does all this mean?
第一个值 (u
) 是您的程序在 user 上下文中花费的时间。也就是说,你的代码花了多长时间 运行ning.
第二个值 (s
) 是您的程序在 系统 上下文中花费的时间。意思是,在您的程序执行期间,它在内核中花费了多长时间来处理您的程序发出的系统调用。
第三个值是您的程序 运行 的总时间,包括 user、system 和 睡觉 未显示。
我相信如果你算一下,你会发现你的程序是 运行ning(而不是 sleeping ) 96.9% 的时间从开始到结束。
Q2: Why are these numbers changing every time I execute my program?
因为你运行正在使用一个真正的桌面系统,使用抢占式操作系统,所以也运行正在其他程序,并处理硬盘等外部事件activity和网络流量。您不可能期望程序每次都以 完全 相同的时间 运行。 1
1 - 对于经常用于嵌入式系统的专门设计的 "Real-Time OS",情况并非如此,例如汽车。