Время user + sys равно реальному / настенному времени? - PullRequest
1 голос
/ 12 ноября 2009

В Perl:

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

Это правда? Я читал некоторые другие вопросы, где люди делали такие вещи, как сохранение текущего времени в переменной и сбор его позже, но почему бы это не сработало?

Ответы [ 4 ]

10 голосов
/ 12 ноября 2009

Нет, это не так. Пользователь и системное время учитывают только использованное процессорное время. Пока программа спит, реальное время все еще проходит, но пользовательское и системное время останавливаются. Кроме того, в многопроцессорных системах вполне может случиться, что пользователь + система на больше , чем в реальном времени.

4 голосов
/ 12 ноября 2009

Нет. Время пользователя и системное время что-то еще .

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 голосов
/ 12 ноября 2009
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 голосов
/ 12 ноября 2009

Хотя некоторые люди показали вам примеры со сном, также рассмотрите реальные случаи, когда ваш процесс ожидает ответов от удаленных машин, других процессов и так далее. Пока вы ожидаете запроса к базе данных, время настенного часового режима идет, даже если вы не используете процессор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...