如何在Perl中定时循环迭代?

时间:2011-01-17 07:22:34

标签: perl loops profile

我有一个如下所示的循环:

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

我想知道每次迭代需要多长时间以及整个furshlugginer事情需要多长时间。

在Perl中执行此操作的最佳方法是什么?

2 个答案:

答案 0 :(得分:6)

使用核心模块的基准: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";

答案 1 :(得分:2)

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可能并非在所有平台上都可用。返回的秒数将是一个浮点数。