我有一个如下所示的循环:
for (0..10000) {
$my_array[$_] = `some external program`;
}
我想知道每次迭代需要多长时间以及整个furshlugginer事情需要多长时间。
在Perl中执行此操作的最佳方法是什么?
答案 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可能并非在所有平台上都可用。返回的秒数将是一个浮点数。