日期:2008-02-29 浏览次数:20615 次
刚刚在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倍)。
Linux与Windows平台对比
在Linux上访问文件功用略高于Windows,不过Windows上文件复制的功用要比Linux慢60%,可能是ACL高级安全的缘故。
在Linux上访问MySQL要比Windows快不少,而且在Windows上运转PHP 5.3的情况则更为恶劣(不过从下面PostgreSQL的情况上来看,这应该是蹩脚实现的缘故)。
PostgreSQL在两个平台上的功用非常接近(1000个操作的差距在0.06秒之内)——无论是PHP 5.3还是PHP 5.2,Windows上表现都略胜一筹。
Windows上PHP 5.2访问MS SQL Server的功用稍逊于在Linux上访问MySQL(此时还没有面向PHP 5.3的SQL Server支持)。
对于纯粹的PHP执行功用来说,Linux和Windows相差无几,这不会成为选择Linux或Windows作为部署平台的决定性要素。如果你在构建一个使用程序,那么PostgreSQL可能是更好的选择。由于它在两个平台上的表现都很优秀。
如果你的使用程序必须使用MySQL,那么选择Windows就需求早些计划扩展性问题了(团体认为Sun不太可能为Windows优化MySQL的功用)。
PHP的第一个版本的SQL Server驱动程序要比MySQL或PostpreSQL要慢一些,但这应该不会成为问题。第二个版本的驱动器正在开发之中,它会带来功用提升。
在Joe看来,全面来看,PHP和IIS团队在执行功用上曾经做的非常成功,接下来就需求各开源程序的团队(Drupal、WordPress、Joomla等等)为各平台进行功用优化了。
不过,除了文件复制操作之外,ASP.NET在功用方面全面领先于PHP(无论部署在Linux还是Windows上面):
Linux上访问MySQL的功用稍稍优于Windows上访问SQL Server的功用(使用普通的数据类型和SELECT语句)。但是这里的差距几乎可以忽略不计。
ASP.NET(C#)操作,如对象使用,类库调用等等,其功用都远高于PHP。对于这个测试结果,Joe补充道:
我知道我的一些PHP朋友和Linux伙计们要跳出来驳斥我的测试和结果了。
我不断在思考,这样的功用比较能否需求加入一些高级的优化选项。不过.NET方面也有例如多线程,异步请求,和各种缓存方式可以使用。
请留意——我并没有说“ASP.NET更快,所以你不应该使用PHP!”,我使用认为,PHP过于简单导致对某些高级使用来说有些寸步难行,就像ASP.NET在项目晚期会有学习方面的复杂性。
对我来说,PHP最令人兴奋的地方不是它的言语/平台,而是成千上万聪明的PHP开发人员,以及各种优秀的项目(如Drupal、Joomla、WordPress、PHPBB、Nuke等等)。
可以这么认为,PHP在Windows和Linux上的功用处于同一个水平上,我如今终于可以为Windows编写那些我盼望着许多年的PHP类库了。
Joe还地下了测试代码。他表示,如果你对这个测试的结果有疑义,可以亲身进行这个实验,或是编写你本人的测试代码进行试验。
文章发布之后,许多网友对这一测试结果发表了看法。Joe基本上逐一回复了其中的次要观点:
“我使用ASP.NET只是由于我喜欢Visual Studio IDE”——我团体认为Visual Studio是最有生产力的开发工具。但是,PHP的有不错的选择。我使用Zend Studio,PHPEd,Komodo,Delphi for PHP,这些都很不错。我讨厌Eclipse,不过Zend也在这方面为PHP开发做了不少扩展。
应该比较ASP的功用——不用了,谢谢。旧式的ASP与目前的PHP与ASP.NET差距太大了。做这种比较,似乎是在建议使用ASP开发新项目,我强烈不建议你这么做。