如何解释Perl的Benchmark模块报告的基准时间?

前端之家收集整理的这篇文章主要介绍了如何解释Perl的Benchmark模块报告的基准时间?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
摘要

当我使用Perl的Benchmark实用程序执行一个非常简单的程序时.我得到的值不是(显示为)毫秒或纳秒.返回的基准数据对我没用,因为我不知道如何解释它.

例:

use Benchmark;

my $start = Benchmark->new;
print "foo!";
my $end = Benchmark->new;

my $diff = timediff($end,$start);

print timestr($diff);

返回:foo! 0 wallclock secs(0.00 usr 0.00 sys = 0.00 cpu)

不同的字段意味着什么:Wallclock秒,Usr,Sys,cpu?它们可以外推得到毫秒值吗?现在,对于我的基准测试,我需要的只是一次执行的真实世界时间,而不需要考虑基准测试的一些更深奥的方面.

解决方法

Wallclock秒是实际经过的时间,就像你看着你的手表计时一样.

user space中实际花费在cpu上的时间的usr秒.

sys seconds是在内核空间中实际花费在cpu上的时间.

cpu时间是cpu上花费的总时间.

但是,一旦掌握了所有这些,就必须弄清楚实际上要测量的是什么. Benchmark模块仅对您在本地计算机上执行的操作进行计时.如果必须在远程计算机(例如数据库服务器或Web服务器)上启动进程,则这些计算机的cpu时间不是结果的一部分.但是,等待响应的时间是挂钟时间的一部分.

你的结果表明,一切都在瞬间发生.你需要更丰富的东西,所以它需要一些时间.如果您只需要一次运行的挂钟时间,则根本不需要使用Perl.使用命令行中的times实用程序.

我在Mastering Perl中进行了相当广泛的讨论并进行了一些基准测试.然而,就在本周,我认为Benchmark模块已经过时了. SteffenMüller的Dumbbench做得更好.请参阅blogs.perl.orgdumbbench博客文章.

猜你在找的Perl相关文章