代码之家  ›  专栏  ›  技术社区  ›  dlamotte

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

  •  1
  • dlamotte  · 技术社区  · 15 年前

    在Perl:

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

    这是真的吗?我读了一些其他的问题,比如人们在变量中节省当前的时间,稍后再收集,但是为什么这不起作用呢?

    4 回复  |  直到 15 年前
        1
  •  4
  •   Sinan Ünür    15 年前
    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
  •  10
  •   brian d foy    15 年前

    不,不是。用户和系统时间帐户仅用于已用的CPU时间。当程序处于休眠状态时,实时仍将过去,但用户和系统时间将保持静止。此外,在多CPU系统上,用户+系统很可能 更大的 而不是实时的。

        3
  •  4
  •   mob    15 年前

    不,用户时间和系统时间是 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
    
        4
  •  2
  •   brian d foy    15 年前

    尽管有一些人向您展示了睡眠的例子,但也要考虑现实情况,其中您的进程正在等待来自远程计算机、其他进程等的响应。当您在等待数据库查询时,即使您不使用处理器,WallClock时间也在继续前进。