用户+系统时间是否等于实际/挂钟时间?

时间:2009-11-12 16:09:09

标签: unix

Perl:

my ($usr,$sys,$cusr,$csys) = times;
printf "real %s, user %s, sys %s\n", $usr + $sys, $usr, $sys;

这是真的吗?我读了一些其他问题,人们做了一些事情,比如把当前时间保存在变量中并稍后收集它,但为什么这不起作用呢?

4 个答案:

答案 0 :(得分:10)

不,不是。用户和系统时间仅考虑已用CPU时间。当程序处于睡眠状态时,实时仍然通过,但用户和系统时间仍然存在。此外,在多CPU系统上,用户+系统可能比实时更大

答案 1 :(得分:4)

C:\Temp> cat tt.pl
sleep 5;
my ($user, $system) = times;
print "u = $user s = $system\n";


C:\Temp> tt
u = 0.015 s = 0.015

答案 2 :(得分:4)

没有。用户时间和系统时间为something else

my $start = time;
sleep 5;
my ($usr,$sys,$cusr,$csys) = times;
my $stop = time;
printf "Real time (approx): %gs  User+sys: %gs\n", $stop-$start,$usr+$sys;


Real time (approx): 5s  User+sys: 0.077s

答案 3 :(得分:2)

虽然有些人向您展示了睡眠示例,但也要考虑实际情况,即您的进程正在等待来自远程计算机,其他进程等的响应。当您在等待数据库查询时,即使您没有使用处理器,也会继续使用挂钟时间。