ASP.NET与PHP是目前Web开发的主流技术,众多Web开发人员都对两种技术的安全性、执行效率、扩展性等方面进行比较,本文测试了不同平台不同应用环境下ASP.NET与PHP的执行效率。

刚刚在9月编程言语排行榜上取得历史性打破的PHP在Web开发范畴最到的对手或许便是依据微软.NET技能的ASP.NET。近来,微软的Joe Stagner在博客上宣布了一系列文章比较了PHP和ASP.NET功能方面的文章,引起了来自两边程序员的许多回应。Joe表明,他会将这样的测验继续下去,并寻求更为适宜的方法,以取得对实践项目来说尽或许有参考价值的定论。

ASP.NET比拼PHP,谁是速度之王?(asp和php哪个速度快)  ASP.NET PHP 第1张

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开发新项目,我激烈不主张你这么做。#p#

32位与64位体系比照

32位与64位体系之间的比较——这些测验的意图并不是为了体现64位体系上的功能距离。往后的测验我会添加64位的场景。

“PHP丑恶备至”——哦,我不赞同。老式ASP要丑恶多了。你能够写出十分可怕而丑恶的PHP代码,也能够写出丑恶而可怕的C#或VB代码。相同,你也能够写出高雅的C++款式的PHP。这彻底只和开发人员的技能有关。

应该运用Windows上的Apache进行测验——Apache是Linux上的服务器,不过我以为假如你在Windows上不运用IIS 7则会丢失太多太多东西了。

“有方法在Win2K8中,在不丢失安全性的前提下加速文件仿制功能吗?”——好像不可。我以为这涉及到Windows服务器上的ACL体系。我今后或许会测验经过数据流读取文件的功能,有些东西的功能或许会有所改善。不过,Web运用程序一般不会编程来仿制许多文件。

“PHP一直是,也永久仅仅一个半专业性质的环境”——这种说法狗屁不通。PHP渠道上有许多专业的,高质量的运用程序,也有许多我十分敬重的开发人员。是否专业是开发人员的问题,不是PHP或ASP.NET的问题。

“我以为比较没有opcode缓存的PHP很不公正,.NET是编译履行的,而PHP需求每次都解说并‘编译’页面”——我赞同这个测验或许不行完好,可是我不认同这个逻辑。我测验PHP的方法,就和下载装置的方法相同。我的虚拟主机也没有装置op-code缓存。而事实上,ASP.NET自带这个特性也并不意味着测验是不公正的,这是由于PHP短少这个特性——不过这个要求很合理,我正在预备新的测验。

“说PHP不是一个‘专业的’言语很没道理,由于简直一切***的站点都是用PHP构建的”——这种说法是没道理,不过说那些站点“简直都是”用PHP构建的也是过错的。有些是,有些不是。

假如你们看到这一数据之后对ASP.NET信心倍增我天然很快乐。假如我不以为.NET是开发Web运用程序来说是一种更好的挑选——至少不属于其它渠道,那么我也不会在微软工作了。

可是……假如你由于这些数据而忽视PHP,也是过错且天真的行为。

从纯技能视点来说,我以为.NET远比PHP强壮,但这并不意味着PHP不行强壮。在我看来,PHP的力气体现在很多的运用程序以及可用的结构。

大约一周今后,Joe公开了第2次测验的成果。与前一个测验比较,第二个测验首要有以下两个改动:

为Linux和Windows上装置了op-code缓存,并从头运转了大部分测验。
由于一些依靠项的问题,PHP 5.3 + APC的测验渠道变成了Debain 5操作体系。
关于第2次测验及其成果,Joe解说到:

从成果上看,Ubuntu和Debian上运转PHP的功能距离能够忽略不计。部分条意图功能有些细微的改善,有些则有25%的进步,可是全体来说其作用比我幻想中要来得低。

运用APC之后,一些条意图运转反而变慢了,不过我以为这仅仅机器所形成的差错。请注意,表格中显现的不是***次的成果,都是经过两次改写,确认是在缓存射中时得到的成果。

我以为现在的测验十分公正。

空的循环测验和空的函数履行十分重要,由于这反映了言语或渠道的根底耗费。这是处页面传输等功能开支外的功能耗费,是一个重要的考虑方面。

我的一些PHP朋友也认可这个测验的准确性,不过给出了十分有见地的弥补:

ASP.NET在功能上的抢先不会对我有什么影响。PHP是我的***,我的运用程序现已满足快了。没错,ASP.NET在根底功能上是比较快,可是我的运用程序能够经过优异的页面完成和JavaScript实践把这部分功能补回来。

此外,依据上一次试验的成果,在Windows渠道上运转PHP时,在MySQL和文件的拜访上有一些功能问题,微软许多团队都向我获取了相关信息。期望这些数据都够转变为实在的改善。

Joe表明,他将搜集我们以为更公正,更有意义的测验场景。以下是他所方案的测验项目:

◆实践页面测验:循环,寒暑调用和目标操作是一类测验,不过页面的全体出现则是另一种有意义的测验。

◆负载测验:哪一个环境能够一起处理更许多的恳求。

◆在负载测验中,哪一方的功能会下降地更快。

◆在各种状况下,64位渠道的体现怎么。

国内也从前进行过PHP在Linux和Windows渠道上的功能测验。InfoQ从前报导过微软在WordCamp China 2009大会上公开了之前与康盛创想协作进行的功能评价成果:在Windows Server 2008 + IIS上运转PHP,从均匀相应时刻,每秒处理的恳求数,以及数据吞吐量等多方便均优于Linux + Apache的保管方法。

【修改引荐】

  1. 再谈Web开发:PHP,Java和.NET的曩昔,现在和未来
  2. Java、.Net、PHP、Ruby优劣势概览
  3. PHP与ASP.NET比较的浅析
  4. ASP.NET JSP PHP之间的取舍
  5. PHP ASP.NET的比赛
转载请说明出处
知优网 » ASP.NET比拼PHP,谁是速度之王?(asp和php哪个速度快)

发表评论

您需要后才能发表评论