Как я могу рассчитать итерацию цикла в Perl? - PullRequest
1 голос
/ 17 января 2011

У меня есть цикл, который выглядит следующим образом:

for (0..10000) {
    $my_array[$_] = `some external program`;
}

И я хочу узнать, сколько времени занимает каждая итерация и сколько времени занимает вся вещь furshlugginer.

Какой самый лучший способсделать это внутри Perl?

Ответы [ 2 ]

6 голосов
/ 17 января 2011

Использовать Benchmark из основных модулей: http://perldoc.perl.org/Benchmark.html

В основном как-то так:

use Benchmark;
$t0 = Benchmark->new;
$my_array[$_] = `some external program`;
$t1 = Benchmark->new;
$td = timediff($t1, $t0);
print "the code took:",timestr($td),"\n";

и для проверки нескольких итераций попробуйте:

$t = timeit(10000, '... code...');
print "10000 loops of code took:", timestr($t), "\n";
2 голосов
/ 17 января 2011
use Time::HiRes 'gettimeofday', 'tv_interval';

my $start = [ gettimeofday() ];

for (0..10000) {
    my $iteration_start = [ gettimeofday() ];
    $my_array[$_] = `some external program`;
    $elapsed_secs[$_] = tv_interval($iteration_start);
}

my $total_secs = tv_interval($start);

gettimeofday может быть недоступен на всех платформах.Возвращаемые секунды будут числами с плавающей запятой.

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