Как мне интерпретировать время тестирования, как сообщается модулем Perl's Benchmark? - PullRequest
3 голосов
/ 23 сентября 2010

Сводка

Когда я выполняю очень простую программу с помощью утилиты Perl's Benchmark.Я получаю значения, которые не являются (отображаются как) миллисекунды или наносекунды.Возвращенные данные теста мне не пригодятся, потому что я не знаю, как их интерпретировать.

Пример:

use Benchmark;

my $start = Benchmark->new;
print "foo!";
my $end = Benchmark->new;

my $diff = timediff($end, $start);

print timestr($diff);

Возвращает: foo! 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU)

Что означают различные поля: секунды Wallclock, Usr, Sys, CPU?Можно ли их экстраполировать, чтобы получить значение в миллисекундах?Прямо сейчас для моего сравнительного анализа все, что мне нужно, - это время в реальном времени для отдельного выполнения, без необходимости учитывать некоторые из более эзотерических аспектов тестов.

1 Ответ

7 голосов
/ 23 сентября 2010

Секундные часы - это фактическое прошедшее время, как если бы вы смотрели на часы, чтобы посмотреть их время.

Время в секундах, фактически затраченное на процессор, в пространстве пользователя .

Системные секунды - это время, фактически потраченное на процессор в пространстве ядра.

Время ЦП - это общее время, потраченное на ЦП.

Однако, когда у вас есть все это, вы должны выяснить, что вы на самом деле пытаетесь измерить. Модуль Benchmark только раз, что вы делаете на локальной машине. Если вам нужно запустить процессы на удаленном компьютере (например, на сервере базы данных или веб-сервере), то время CPU этих компьютеров не является частью результата. Тем не менее, время, которое вы тратите на ожидание их ответов, является частью времени настенного часа.

Ваши результаты показывают, что все произошло почти мгновенно. Вам нужно что-то более мясное, так что это займет некоторое время. Если вам просто нужно время для однократного пробега, вам вообще не нужно использовать Perl. Используйте утилиту times из командной строки.

Я довольно подробно разбираюсь в этом в Освоение Perl и некоторых моих сравнительных тестах. Тем не менее, только на этой неделе я думаю, что модуль Benchmark устарел. Dumbbench Штеффена Мюллера делает работу намного лучше. Смотрите его dumbbench записи в блоге на blogs.perl.org .

...