ASP.NET與PHP速度對(duì)比
PHPChina資訊:剛剛在9月編程語(yǔ)言排行榜上取得歷史性突破的PHP在Web開(kāi)發(fā)領(lǐng)域最到的對(duì)手可能就是基于微軟.NET技術(shù)的ASP.NET。近日,微軟的Joe Stagner在博客上發(fā)表了一系列文章比較了PHP和ASP.NET性能方面的文章,引起了來(lái)自雙方程序員的大量回應(yīng)。Joe表示,他會(huì)將這樣的測(cè)試持續(xù)下去,并尋求更為合適的方式,以獲得對(duì)實(shí)際項(xiàng)目來(lái)說(shuō)盡可能有參考價(jià)值的結(jié)論。
Joe在博客中稱,一般來(lái)說(shuō),作性能測(cè)試的目的是要嘗試證明一方比令一方要快。我受雇于微軟,同時(shí)編寫(xiě)PHP和ASP.NET代碼。我在.NET出現(xiàn)之前就在使用PHP,兩個(gè)東西我都很喜歡。
所以,我很難說(shuō)出哪個(gè)更好。當(dāng)我說(shuō)PHP好話時(shí),我的微軟同事們會(huì)寫(xiě)信來(lái)批評(píng)我,而當(dāng)我發(fā)表傾向于ASP.NET的言論時(shí),我的PHP朋友們會(huì)說(shuō)我是微軟的托。
我進(jìn)行這個(gè)測(cè)試是因?yàn)槊總(gè)人都對(duì)PHP的性能有自己的看法(Windows vs. Linux & 5.2 vs. 5.3),卻沒(méi)人能給出明確的數(shù)據(jù)。
ASP.NET比拼PHP的測(cè)試環(huán)境如下:
- 所有的測(cè)試都在同一臺(tái)機(jī)器上運(yùn)行(擁有4G內(nèi)存和60G 7200轉(zhuǎn)硬盤(pán)的Toshiba Tecra M5)。
- Ubuntu 9和Windows Server 2008標(biāo)準(zhǔn)版分別安裝于獨(dú)立(但相同)的硬盤(pán)中。
- Linux使用Apache2,Windows使用IIS 7作為各自的Web服務(wù)器。
- 雙方的操作系統(tǒng)都進(jìn)行了完整的patch或升級(jí)。
- 雙方的系統(tǒng)和運(yùn)行時(shí)都沒(méi)有進(jìn)行額外的性能增強(qiáng)。
- 從實(shí)驗(yàn)結(jié)果上看,PHP在Linux和Windows的執(zhí)行性能各有千秋:
- 純粹的語(yǔ)句執(zhí)行在Windows上表現(xiàn)更好。
- 函數(shù)調(diào)用在Windows上更快。
- 對(duì)象的創(chuàng)建和訪問(wèn),對(duì)于PHP 5.2來(lái)說(shuō)在Linux上更快,但是對(duì)于PHP 5.3來(lái)說(shuō)則是Windows更快。
- 類庫(kù)調(diào)用在Linux上快得多(如在Ubuntu上進(jìn)行加密要比Windows要快3到5倍)。
Linux與Windows平臺(tái)對(duì)比
在Linux上訪問(wèn)文件性能略高于Windows,不過(guò)Windows上文件復(fù)制的性能要比Linux慢60%,可能是ACL高級(jí)安全的緣故。 在Linux上訪問(wèn)MySQL要比Windows快不少,而且在Windows上運(yùn)行PHP 5.3的情況則更為惡劣(不過(guò)從下面PostgreSQL的情況上來(lái)看,這應(yīng)該是糟糕實(shí)現(xiàn)的緣故)。
PostgreSQL在兩個(gè)平臺(tái)上的性能非常接近(1000個(gè)操作的差距在0.06秒之內(nèi))——無(wú)論是PHP 5.3還是PHP 5.2,Windows上表現(xiàn)都略勝一籌。
Windows上PHP 5.2訪問(wèn)MS SQL Server的性能稍遜于在Linux上訪問(wèn)MySQL(此時(shí)還沒(méi)有面向PHP 5.3的SQL Server支持)。
對(duì)于純粹的PHP執(zhí)行性能來(lái)說(shuō),Linux和Windows相差無(wú)幾,這不會(huì)成為選擇Linux或Windows作為部署平臺(tái)的決定性因素。如果你在構(gòu)建一個(gè)應(yīng)用程序,那么PostgreSQL可能是更好的選擇。因?yàn)樗趦蓚(gè)平臺(tái)上的表現(xiàn)都很優(yōu)秀。
如果你的應(yīng)用程序必須使用MySQL,那么選擇Windows就需要早些計(jì)劃擴(kuò)展性問(wèn)題了(個(gè)人認(rèn)為Sun不太可能為Windows優(yōu)化MySQL的性能)。
PHP的第一個(gè)版本的SQL Server驅(qū)動(dòng)程序要比MySQL或PostpreSQL要慢一些,但這應(yīng)該不會(huì)成為問(wèn)題。第二個(gè)版本的驅(qū)動(dòng)器正在開(kāi)發(fā)之中,它會(huì)帶來(lái)性能提升。
在Joe看來(lái),全面來(lái)看,PHP和IIS團(tuán)隊(duì)在執(zhí)行性能上已經(jīng)做的非常成功,接下來(lái)就需要各開(kāi)源程序的團(tuán)隊(duì)(Drupal、WordPress、Joomla等等)為各平臺(tái)進(jìn)行性能優(yōu)化了。
不過(guò),除了文件復(fù)制操作之外,ASP.NET在性能方面全面領(lǐng)先于PHP(無(wú)論部署在Linux還是Windows上面):
Linux上訪問(wèn)MySQL的性能稍稍優(yōu)于Windows上訪問(wèn)SQL Server的性能(使用普通的數(shù)據(jù)類型和SELECT語(yǔ)句)。但是這里的差距幾乎可以忽略不計(jì)。
ASP.NET(C#)操作,如對(duì)象使用,類庫(kù)調(diào)用等等,其性能都遠(yuǎn)高于PHP。對(duì)于這個(gè)測(cè)試結(jié)果,Joe補(bǔ)充道:
我知道我的一些PHP朋友和Linux伙計(jì)們要跳出來(lái)駁斥我的測(cè)試和結(jié)果了。
我一直在思考,這樣的性能比較是否需要加入一些高級(jí)的優(yōu)化選項(xiàng)。不過(guò).NET方面也有例如多線程,異步請(qǐng)求,和各種緩存方式可以使用
請(qǐng)注意——我并沒(méi)有說(shuō)“ASP.NET更快,所以你不應(yīng)該使用PHP!”,我使用認(rèn)為,PHP過(guò)于簡(jiǎn)單導(dǎo)致對(duì)某些高級(jí)應(yīng)用來(lái)說(shuō)有些舉步維艱,就像ASP.NET在項(xiàng)目早期會(huì)有學(xué)習(xí)方面的復(fù)雜性。
對(duì)我來(lái)說(shuō),PHP最令人興奮的地方不是它的語(yǔ)言/平臺(tái),而是成千上萬(wàn)聰明的PHP開(kāi)發(fā)人員,以及各種優(yōu)秀的項(xiàng)目(如Drupal、Joomla、WordPress、PHPBB、Nuke等等)。
可以這么認(rèn)為,PHP在Windows和Linux上的性能處于同一個(gè)水平上,我現(xiàn)在終于可以為Windows編寫(xiě)那些我盼望著許多年的PHP類庫(kù)了。
Joe還公開(kāi)了測(cè)試代碼。他表示,如果你對(duì)這個(gè)測(cè)試的結(jié)果有疑義,可以親自進(jìn)行這個(gè)實(shí)驗(yàn),或是編寫(xiě)你自己的測(cè)試代碼進(jìn)行試驗(yàn)。
文章發(fā)布之后,許多網(wǎng)友對(duì)這一測(cè)試結(jié)果發(fā)表了看法。Joe基本上逐一回復(fù)了其中的主要觀點(diǎn):
“我使用ASP.NET只是因?yàn)槲蚁矚gVisual Studio IDE”——我個(gè)人認(rèn)為Visual Studio是最有生產(chǎn)力的開(kāi)發(fā)工具。但是,PHP的有不錯(cuò)的選擇。我使用Zend Studio,PHPEd,Komodo,Delphi for PHP,這些都很不錯(cuò)。我討厭Eclipse,不過(guò)Zend也在這方面為PHP開(kāi)發(fā)做了不少擴(kuò)展。
應(yīng)該比較ASP的性能——不用了,謝謝。舊式的ASP與目前的PHP與ASP.NET差距太大了。做這種比較,似乎是在建議使用ASP開(kāi)發(fā)新項(xiàng)目,我強(qiáng)烈不建議你這么做。
出處:phpchina
責(zé)任編輯:bluehearts
上一頁(yè) 下一頁(yè) ASP.NET與PHP速度對(duì)比 [2]
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|