如何获取Perl程序的执行时间?

时间:2015-11-05 14:31:26

标签: perl

如果我停止它怎么能获得执行时间?示例我运行我的perl脚本,然后按终端快捷键CTRL + C或CTRL + Z来停止它,然后发布执行时间。这是否可行?

2 个答案:

答案 0 :(得分:6)

在Linux上,您可以使用program time来获取执行时间。只需将它添加到您的Perl脚本中就可以了。

$ cat foo.pl
1 while 1;
$ time perl foo.pl
^C
real    0m1.006s
user    0m0.756s
sys 0m0.008s

当然,这不仅限于Perl程序。它适用于任何程序。

答案 1 :(得分:2)

Perl有一个内置变量,名为$^T,它是程序的开始时间。

注意 - 在Unix上CTRL-Z 停止一个进程(SIGSTP)(可以继续)CTRL-C导致它退出。 (SIGINT)

SIGINT添加处理程序就是这样的。

$SIG{'INT'} = sub { warn "Start time: $^T\n, Run time:".( time() - $^T)."\n" };

注意 - 这实际上不再炸毁你的程序 - 如果你这样做,你应该die,否则程序会做一些意想不到的事情(例如不退出在Ctrl-C上 - 但是,如果它正在中止当前的操作,那就没问题了

通常情况下,您可以挂钩其中一个其他信号,例如明确用于用户定义功能的SIGUSR1SIGUSR2。 (然后你可以kill -USR1 <pid>

#!/usr/bin/env perl
use strict;
use warnings;

$SIG{'INT'} = sub { warn "Started at $^T, runtime ".(time() - $^T)."\n"; die };
$SIG{'USR1'} = sub { warn "Started at $^T, runtime ".(time() - $^T)."\n"; 
                     warn "Program continuing\n"; };

while ( 1 ) {
    sleep 1;
}