比较运行时

时间:2008-09-15 10:06:19

标签: php python benchmarking

我正在尝试对PHP与Python(以及可能包含的任何其他语言)进行一些准确的运行时比较。脚本中的计时不是我的问题,但脚本中的计时并不考虑从请求运行脚本到输出的所有内容。

  

1)是否真的值得考虑这些事情?

     

2)假设值得考虑,我该怎么做?

我正在使用Mac,所以我可以访问Linux命令,我不怕编译/创建命令来帮助我,我只是不知道如何编写这样的命令。

3 个答案:

答案 0 :(得分:4)

如果您的想法是比较语言,我会说除了它们之外的任何内容与比较目的无关。

尽管如此,您可以使用time命令来测量所有内容,并将其与脚本中的时间进行比较。

像这样:

$ time script.php
HI!

real    0m3.218s
user    0m0.080s
sys     0m0.064s

它将为您提供时钟时间,用户时间(PHP解释器)和系统时间(操作系统时间)

如果您正在考虑使用Web,那么它会变得更加困难,因为您将混合使用Web服务器开销,并且如果您使用的是WSGI v / s mod_php,则并不总是很容易比较。然后你必须将探针连接到链的网络保存部分

答案 1 :(得分:1)

  1. 如果您正在优化代码,那么值得考虑速度。您通常应该知道为什么要优化代码(例如:现有代码库中的特定任务花费的时间太长,而不是“我听说PHP比Python慢​​”)。如果您实际上没有计划切换语言,那么值得考虑速度。仅仅因为一个小模块做得稍快一些并不意味着用另一种语言重写你的应用程序是一个好主意。除了速度之外,选择语言还有很多其他因素。

  2. 当然,你是基准。多次运行两个代码库并比较时间。如果两个脚本都可以从shell执行,则可以使用time命令,或者使用每种语言的相应基准测试功能;后一种情况很大程度上取决于实际的语言。

答案 2 :(得分:1)

好吧,您可以使用“time”命令来帮助:

you@yourmachine:~$ time echo "hello world"
hello world

real    0m0.000s
user    0m0.000s
sys 0m0.000s
you@yourmachine:~$ 

这将在环境之外进行计时。

至于你是否需要真正计算额外的工作......这完全取决于你在做什么。我假设这是某种某种类型的Web应用程序,所以它取决于你使用的框架实际上是如何工作的...它是否缓存了某种编译(或解析)版本的脚本?如果是这样,那么启动时间将完全无关紧要(因为第一次命中将是启动时间中唯一存在的时间)。

此外,请确保在循环中运行测试,以便您可以对第一次运行进行折扣(如果需要,还可以在报告中首次运行时包含成本)。我已经在Java中完成了一些测试,并且由于JIT正在完成其工作,第一次运行总是最慢的(并且在PHP,Python和您尝试的任何其他语言中可能存在相同类型的命中。)

相关问题