Зависит от того, что вы делаете. Если вы хотите измерить время настенных часов (количество фактического времени, которое прошло), вы не можете стать намного лучше. Если вы хотите измерить, как долго компьютер что-то делал, вы можете посмотреть на функцию times
или команду time
. Функция times
в Perl возвращает список текущего накопленного времени для этого процесса в вашем коде и код любых модулей, которые вы используете, этот процесс в системных вызовах, все дочерние элементы этого процесса в коде пользователя и все это дочерние элементы процесса в системных вызовах.
#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes;
my $start_time = [Time::HiRes::gettimeofday()];
.
.
.
my ($user, $system, $child_user, $child_system) = times;
print "wall clock time was ", Time::HiRes::tv_interval($start_time), "\n",
"user time for $$ was $user\n",
"system time for $$ was $system\n",
"user time for all children was $child_user\n",
"system time for all children was $child_system\n";
Команда time
в UNIX похожа по функции. Вы запускаете команду, подобную этой
time ./script.pl
и выводит что-то вроде этого
real 0m0.692s
user 0m0.019s
sys 0m0.109s
где real - это время настенных часов, а user и sys такие же, как для пользователя и системы выше.
Команда time
проще для человека, но функция times
дает вам больше информации и ее легче встраивать в компьютерную программу (плюс она дает преимущество в получении результатов, пока программа еще выполняется). ).
О, я забыл упомянуть $^T
. Эта переменная содержит время начала программы в секундах с начала эпохи, поэтому, если вам важна только детальность секунд, вы можете просто сказать
END { print "The program ran for ", time() - $^T, " seconds\n" }
в верхней части вашей программы.