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

问题描述 投票:0回答:2

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

perl
2个回答
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程序。它适用于任何程序。


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;
}
© www.soinside.com 2019 - 2024. All rights reserved.