Python网页和PHP网页哪个更快?

42

Python网页和PHP网页,哪个更快?

有人知道Pylons(或其他框架)的速度如何与使用PHP制作的类似网站相比吗?

我知道通过CGI提供Python基础网页比PHP慢,因为它每次启动都需要很长时间。

我喜欢使用Pylons,即使比PHP慢,我仍会使用它。但如果Pylons比PHP更快,我可能可以,希望最终说服我的雇主允许我将网站转换为Pylons。

10个回答

90

听起来你并不想比较这两种编程语言,而是想比较两个 Web 系统

这很棘手,因为涉及到许多变量。

例如,Python Web 应用程序可以利用 mod_wsgi 与 Web 服务器进行通信,这比 PHP 与 Web 服务器进行通信的任何典型方式都要快(即使使用 Apache, mod_php 最终也会变得更慢,因为 Apache 只能使用 Prefork MPM 而不是像 Worker 这样的多线程 MPM)。

还有代码编译的问题。正如你所知,当文件更改时,Python 会即时编译成字节码(.pyc 文件)。因此,在第一次运行 Python 文件后,编译步骤就被跳过了,Python 解释器只需获取预编译的 .pyc 文件。由于这个原因,有人可能会认为 Python 在本质上比 PHP 更具优势。但是,针对 PHP 网站可以安装优化器和缓存系统(我最喜欢的是 eAccelerator),达到类似的效果。

总的来说,足够的工具存在,以至于基本上可以做到相互实现。当然,正如其他人所提到的那样,切换编程语言涉及到的商业因素不仅仅是速度问题,我们在目前的雇主中有一个使用 oCaml 编写的应用程序,结果证明这是个错误,因为原作者离开了公司,其他人不想接手。类似地,PHP-Web 社区比 Python-Web 社区更大;网站托管服务更可能提供 PHP 支持而非 Python 支持等。

但说回速度问题。你必须认识到,这里的速度问题涉及到许多组成部分。幸运的是,许多这些部分可以独立优化,从而为您提供各种寻求性能提升的途径。


18
在 Python 中,编译成 .pyc 字节码文件的好处被高估了,尤其是在使用类似 Apache/mod_wsgi 的东西时。这是因为它们只在第一次加载模块时才发挥作用。之后,在请求之间的所有内容都将缓存在内存中。对于 PHP 来说,字节码缓存系统更重要,因为应用程序在每个请求完成后实际上会被丢弃,所以必须为每个请求重新加载代码。 - Graham Dumpleton

31

试图说服您的雇主从PHP转向Python是没有意义的,特别是对于一个现有的系统,我认为这就是您在问题中暗示的。

原因是您已经拥有了(可能)一个工作正常的系统,并且已经投入了时间、精力和经验。为了得到微不足道的性能提升(我并不是说会有这样的提升),而放弃这个系统,这将是愚蠢的,任何合格的经理都不应该支持这样做。

这还可能会导致可维护性的问题,具体取决于谁还需要与该系统一起工作以及他们对Python的经验。


1
我看到的任何基准测试都表明Python在性能上不如较新版本的PHP。尽管我还没有看到有人比较完整应用程序的性能。 - michael.schuett

8
我认为PHP(>5.5)对于复杂的Web应用程序来说更快、更可靠,因为它被优化为网站脚本语言。
网络上很多基准测试只是为了证明某种语言更好。但是你不能通过运行X次数学任务来比较两种语言。要进行真正的基准测试,你需要使用两个可比较的框架,包含数百个类/文件,并在同时有100个客户端运行的Web应用程序中进行测试。

3

它们差不多。区别不应该足够大,成为选择其中一个的原因。不要尝试通过编写自己的微小基准测试("hello world")来比较它们,因为您可能无法得出代表生成更复杂页面的真实网站的结果。


3

PHP和Python足够相似,不需要进行任何切换。

从一个语言切换到另一个语言可能带来的任何性能提升都远远不及只是不花费转换代码的金钱(你不是无偿编码吧?)并购买更多硬件。


2

如果可用性成为问题,那么信息系统组织不会考虑这个问题。

如果是这样的情况,请考虑复制,负载均衡和大量内存。


2

不破不修。

只需撰写快速测试,但请记住每种语言在某些函数上比其他语言更快。


2
你需要能够为转换做出商业案例,而不仅仅是“更快”。如果在一定时间内(比如3年)使用技术B构建的网站在开发人员维护方面的成本比技术A高20%,那么增加另一个运行技术A的Web服务器来弥补性能差距可能更便宜。
仅仅说“我们应该转换到技术B,因为技术B更快!”并不起作用。
由于Python远不及PHP普及,我不会感到惊讶,如果长期来看,它的托管、开发和其他维护成本将符合这种情况。

0
唯一正确的答案是“这取决于情况”。有很多变量可以影响性能,而且在任何情况下都可以优化许多东西。

-1

我在新工作中不得不回到Web开发领域,如果不是Pylons/Python,也许我宁愿住在丛林里 :) 在我主观的看法中,PHP适合幼儿园,我在大学三年级就学过了,我相信许多自尊心强(或高估自己能力)的软件工程师不想被PHP代码所困扰。

为什么我的雇主同意使用Python呢?我们(团队)刚刚转向Python,他们没有太多话要说。网站仍然是PHP,但我们正在开发其他应用程序,包括Web应用程序。 Pylons的优点是什么?您可以将Python库集成到Web应用程序中,这是一个巨大的优势。

至于性能方面,我们仍然遇到一些问题。


2
我认为将整个编程语言归类为“幼儿园”有些简单了。特别是因为现在有很多自尊心强的软件工程师正在使用PHP开发Web应用程序。如果你问我,任何自尊心强的Web开发人员都应该选择C#作为前进的道路,而不是PHP或Python,因为我认为它们在面向对象编程方面都不太好。Python有其电池包含哲学的优势,但ASP.NET具有非常良好和连贯的框架。_(编辑:我自己是一名PHP Web开发人员,为了增加一些背景信息。)_ - toon81
4
你可以将你的Python库集成到Web应用程序中,这是一个巨大的优势。请给我一个例子,说明何时不能将自己的库集成到PHP应用程序中? - user151851
你可以用 PHP 做很多事情;我认为你低估了它。然而,Python 看起来更好,并且在许多方面实际上比 PHP 更简单,对于许多任务来说比 PHP 更容易。 - JVE999
2
这个回复不太友善。我认识很多“自尊”的软件工程师都使用PHP。当性能成为问题时,C++和ASM是可行的选择,而不是Python。使用适合工作的工具。 - maiko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接