2008-09-15 85 views
2

我想要获得一些准确的运行时比较PHP和Python(以及可能包含的任何其他语言)的比较。在脚本中计时并不是我的问题,但脚本中的计时并未考虑从请求运行脚本到输出的所有时间。比较运行时间

1)它真的值得考虑这些事情吗?

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

我使用的是Mac,所以我就可以访问的Linux命令,我不怕编译/创建一个命令来帮助我,我只是不知道怎么写这样的命令。

回答

4

如果你的想法是比较语言,我会说他们之外的任何东西都不相关用于比较目的。

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

像这样:

$ time script.php 
HI! 

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

它会给你的时钟时间,用户时间(PHP解释器)和SYS时间(OS时间)

如果你正在考虑网上,那么它得到了很多困难因为如果你使用的是WSGI v/s mod_php,那么你会混淆网络服务器开销,并且这并不总是很容易比较。然后,您必须将探针连接到链的可编程部分

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

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

1

好了,你可以使用“时间”命令的帮助:

[email protected]:~$ time echo "hello world" 
hello world 

real 0m0.000s 
user 0m0.000s 
sys 0m0.000s 
[email protected]:~$ 

,这将得到解决时序环境之外。

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

此外,请确保在循环中运行测试,以便您可以优先考虑第一次运行(并且如果需要,请在报告的第一次运行时包括费用)。我已经在Java中进行了一些测试,并且由于JIT执行其工作(并且在PHP,Python和任何其他语言中可能存在相同的命中),第一次运行总是最慢。