当前位置:  开发笔记 > 编程语言 > 正文

有没有更好的方法来确定Perl中的已用时间?

如何解决《有没有更好的方法来确定Perl中的已用时间?》经验,为你挑选了2个好方法。

有可能.取决于你所说的"更好".

如果您在功能方面要求"更好"的解决方案,那么这就是它.

如果你在"不那么尴尬"的符号意义上要求"更好" ,那么知道在标量上下文中,Time::HiRes::gettimeofday()将从纪元返回浮点秒(小数部分代表微秒),就像Time::HiRes::time()(这是一个很好的下降) -in替换标准time()功能.)

my $start = Time::HiRes::gettimeofday();
...
my $end = Time::HiRes::gettimeofday();
printf("%.2f\n", $end - $start);

要么:

use Time::HiRes qw( time );

my $start = time();
...
my $end = time();
printf("%.2f\n", $end - $start);


Chas. Owens.. 18

取决于你在做什么.如果你想测量挂钟时间(已经过去的实际时间量)你就不会好多了.如果您想测量计算机执行某些操作的时间,那么您可能需要查看该times功能或time命令.timesPerl中的函数返回代码中此进程的当前累计时间列表,以及您正在使用的任何模块的代码,系统调用中的此进程,用户代码中所有此进程的子进程以及此进程的所有子进程系统调用.

#!/usr/bin/perl

use strict;
use warnings;
use Time::HiRes;

my $start_time = [Time::HiRes::gettimeofday()];
.
.
.
my ($user, $system, $child_user, $child_system) = times;
print "wall clock time was ", Time::HiRes::tv_interval($start_time), "\n",
    "user time for $$ was $user\n",
    "system time for $$ was $system\n",
    "user time for all children was $child_user\n",
    "system time for all children was $child_system\n";

timeUNIX中的命令在功能上类似.你运行这样的命令

time ./script.pl

它会输出这样的东西

real    0m0.692s
user    0m0.019s
sys     0m0.109s

其中real是挂钟时间,user和sys与上面的用户和系统相同.

time命令对于人类来说更容易使用,但该times功能为您提供了更多信息,并且更容易适应计算机程序(此外,它还具有在程序运行时产生结果的好处).

哦,我忘了提$^T.此变量保存程序的开始时间,以秒为单位,因此,如果您只关心秒的粒度,您可以说

END { print "The program ran for ", time() - $^T, " seconds\n" }

靠近程序的顶部.



1> vladr..:

有可能.取决于你所说的"更好".

如果您在功能方面要求"更好"的解决方案,那么这就是它.

如果你在"不那么尴尬"的符号意义上要求"更好" ,那么知道在标量上下文中,Time::HiRes::gettimeofday()将从纪元返回浮点秒(小数部分代表微秒),就像Time::HiRes::time()(这是一个很好的下降) -in替换标准time()功能.)

my $start = Time::HiRes::gettimeofday();
...
my $end = Time::HiRes::gettimeofday();
printf("%.2f\n", $end - $start);

要么:

use Time::HiRes qw( time );

my $start = time();
...
my $end = time();
printf("%.2f\n", $end - $start);



2> Chas. Owens..:

取决于你在做什么.如果你想测量挂钟时间(已经过去的实际时间量)你就不会好多了.如果您想测量计算机执行某些操作的时间,那么您可能需要查看该times功能或time命令.timesPerl中的函数返回代码中此进程的当前累计时间列表,以及您正在使用的任何模块的代码,系统调用中的此进程,用户代码中所有此进程的子进程以及此进程的所有子进程系统调用.

#!/usr/bin/perl

use strict;
use warnings;
use Time::HiRes;

my $start_time = [Time::HiRes::gettimeofday()];
.
.
.
my ($user, $system, $child_user, $child_system) = times;
print "wall clock time was ", Time::HiRes::tv_interval($start_time), "\n",
    "user time for $$ was $user\n",
    "system time for $$ was $system\n",
    "user time for all children was $child_user\n",
    "system time for all children was $child_system\n";

timeUNIX中的命令在功能上类似.你运行这样的命令

time ./script.pl

它会输出这样的东西

real    0m0.692s
user    0m0.019s
sys     0m0.109s

其中real是挂钟时间,user和sys与上面的用户和系统相同.

time命令对于人类来说更容易使用,但该times功能为您提供了更多信息,并且更容易适应计算机程序(此外,它还具有在程序运行时产生结果的好处).

哦,我忘了提$^T.此变量保存程序的开始时间,以秒为单位,因此,如果您只关心秒的粒度,您可以说

END { print "The program ran for ", time() - $^T, " seconds\n" }

靠近程序的顶部.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有