How do I interpret benchmark times as reported by Perl's Benchmark module?
总结
当我使用 Perl 的 Benchmark 实用程序执行一个非常简单的程序时。我得到的值不是(显示为)毫秒或纳秒。返回的基准数据对我没有用,因为我不知道如何解释它。
示例:
1 2 3 4 5 6 7 8 9 |
返回:
不同的字段是什么意思:Wallclock seconds、Usr、Sys、CPU?可以推断它们以获得毫秒值吗?现在对于我的基准测试,我所需要的只是单次执行的真实时间,而无需考虑基准测试的一些更深奥的方面。
Wallclock seconds 是实际经过的时间,就像您在看手表来计时一样。
用户空间中实际花费在 CPU 上的 usr 秒数。
sys 秒是在内核空间中实际花费在 CPU 上的时间。
CPU时间是在CPU上花费的总时间。
但是,一旦你掌握了所有这些,你就必须弄清楚你真正想要测量的是什么。 Benchmark 模块只计算你在本地机器上所做的事情。如果您必须在远程机器(例如数据库服务器或 Web 服务器)上启动进程,则这些机器的 CPU 时间不是结果的一部分。但是,您等待他们回复的时间是挂钟时间的一部分。
您的结果表明,一切几乎都是瞬间发生的。你需要一些更肉的东西,所以它需要一些时间。如果您只需要一次运行的挂钟时间,则根本不需要使用 Perl。从命令行使用
我在精通 Perl 和我的一些基准测试演讲中对此进行了相当广泛的讨论。然而,就在本周,我认为 Benchmark 模块已经过时了。 Steffen Müller 的 Dumbbench 做得更好。在 blogs.perl.org 上查看他的dumbbench 博客条目。