刚刚在9月编程语言排行榜上取得历史性突破的PHP在Web开发领域最到的对手可能就是基于微软.NET技术的ASP.NET。近日,微软的Joe Stagner在博客上发表了一系列文章比较了PHP和ASP.NET性能方面的文章,引起了来自双方程序员的大量回应。Joe表示,他会将这样的测试持续下去,并寻求更为合适的方式,以获得对实际项目来说尽可能有参考价值的结论。 Joe在博客中称,一般来说,作性能测试的目的是要尝试证明一方比令一方要快。我受雇于微软,同时编写PHP和ASP.NET代码。我在.NET出现之前就在使用PHP,两个东西我都很喜欢。 所以,我很难说出哪个更好。当我说PHP好话时,我的微软同事们会写信来批评我,而当我发表倾向于ASP.NET的言论时,我的PHP朋友们会说我是微软的托。 我进行这个测试是因为每个人都对PHP的性能有自己的看法(Windows vs. Linux & 5.2 vs. 5.3),却没人能给出明确的数据。 ASP.NET比拼PHP的测试环境如下: * 所有的测试都在同一台机器上运行(拥有4G内存和60G 7200转硬盘的Toshiba Tecra M5)。 * Ubuntu 9和Windows Server 2008标准版分别安装于独立(但相同)的硬盘中。 * Linux使用Apache2,Windows使用IIS 7作为各自的Web服务器。 * 双方的操作系统都进行了完整的patch或升级。 * 双方的系统和运行时都没有进行额外的性能增强。 从实验结果上看,PHP在Linux和Windows的执行性能各有千秋: * 纯粹的语句执行在Windows上表现更好。 * 函数调用在Windows上更快。 * 对象的创建和访问,对于PHP 5.2来说在Linux上更快,但是对于PHP 5.3来说则是Windows更快。 * 类库调用在Linux上快得多(如在Ubuntu上进行加密要比Windows要快3到5倍)。 我的一些PHP朋友也认可这个测试的准确性,不过给出了非常有见解的补充: ASP.NET在性能上的领先不会对我有什么影响。PHP是我的最爱,我的应用程序已经足够快了。没错,ASP.NET在基础性能上是比较快,但是我的应用程序可以通过优秀的页面实现和JavaScript实践把这部分性能补回来。 此外,根据上一次实验的结果,在Windows平台上运行PHP时,在MySQL和文件的访问上有一些性能问题,微软许多团队都向我获取了相关信息。希望这些数据都够转变为切实的改进。 Joe表示,他将收集大家认为更公平,更有意义的测试场景。以下是他所计划的测试项目: * 实际页面测试:循环,寒暑调用和对象操作是一类测试,不过页面的整体呈现则是另一种有意义的测试。 * 负载测试:哪一个环境可以同时处理更大量的请求。 * 在负载测试中,哪一方的性能会下降地更快。 * 在各种情况下,64位平台的表现如何。 国内也曾经进行过PHP在Linux和Windows平台上的性能测试。微软在WordCamp China 2009大会上公开了之前与康盛创想合作进行的性能评估结果:在Windows Server 2008 + IIS上运行PHP,从平均相应时间,每秒处理的请求数,以及数据吞吐量等多方便均优于Linux + Apache的托管方式