


ASP.NET比拼PHP的測試環(huán)境
ASP.NET與PHP速度對比
PHPChina資訊:剛剛在9月編程語言排行榜上取得歷史性突破的PHP在Web開發(fā)領域最到的對手可能就是基于微軟.NET技術的ASP.NET。近日,微軟的Joe Stagner在博客上發(fā)表了一系列文章比較了PHP和ASP.NET性能方面的文章,引起了來自雙方程序員的大量回應。Joe表示,他會將這樣的測試持續(xù)下去,并尋求更為合適的方式,以獲得對實際項目來說盡可能有參考價值的結論。
Joe在博客中稱,一般來說,作性能測試的目的是要嘗試證明一方比令一方要快。我受雇于微軟,同時編寫PHP和ASP.NET代碼。我在.NET出現之前就在使用PHP,兩個東西我都很喜歡。
所以,我很難說出哪個更好。當我說PHP好話時,我的微軟同事們會寫信來批評我,而當我發(fā)表傾向于ASP.NET的言論時,我的PHP朋友們會說我是微軟的托。
我進行這個測試是因為每個人都對PHP的性能有自己的看法(Windows vs. Linux & 5.2 vs. 5.3),卻沒人能給出明確的數據。
ASP.NET比拼PHP的測試環(huán)境如下:
- 所有的測試都在同一臺機器上運行(擁有4G內存和60G 7200轉硬盤的Toshiba Tecra M5)。
- Ubuntu 9和Windows Server 2008標準版分別安裝于獨立(但相同)的硬盤中。
- Linux使用Apache2,Windows使用IIS 7作為各自的Web服務器。
- 雙方的操作系統(tǒng)都進行了完整的patch或升級。
- 雙方的系統(tǒng)和運行時都沒有進行額外的性能增強。
- 從實驗結果上看,PHP在Linux和Windows的執(zhí)行性能各有千秋:
- 純粹的語句執(zhí)行在Windows上表現更好。
- 函數調用在Windows上更快。
- 對象的創(chuàng)建和訪問,對于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執(zhí)行性能來說,Linux和Windows相差無幾,這不會成為選擇Linux或Windows作為部署平臺的決定性因素。如果你在構建一個應用程序,那么PostgreSQL可能是更好的選擇。因為它在兩個平臺上的表現都很優(yōu)秀。
如果你的應用程序必須使用MySQL,那么選擇Windows就需要早些計劃擴展性問題了(個人認為Sun不太可能為Windows優(yōu)化MySQL的性能)。
PHP的第一個版本的SQL Server驅動程序要比MySQL或PostpreSQL要慢一些,但這應該不會成為問題。第二個版本的驅動器正在開發(fā)之中,它會帶來性能提升。
在Joe看來,全面來看,PHP和IIS團隊在執(zhí)行性能上已經做的非常成功,接下來就需要各開源程序的團隊(Drupal、WordPress、Joomla等等)為各平臺進行性能優(yōu)化了。
不過,除了文件復制操作之外,ASP.NET在性能方面全面領先于PHP(無論部署在Linux還是Windows上面):
Linux上訪問MySQL的性能稍稍優(yōu)于Windows上訪問SQL Server的性能(使用普通的數據類型和SELECT語句)。但是這里的差距幾乎可以忽略不計。
ASP.NET(C#)操作,如對象使用,類庫調用等等,其性能都遠高于PHP。對于這個測試結果,Joe補充道:
我知道我的一些PHP朋友和Linux伙計們要跳出來駁斥我的測試和結果了。
我一直在思考,這樣的性能比較是否需要加入一些高級的優(yōu)化選項。不過.NET方面也有例如多線程,異步請求,和各種緩存方式可以使用
請注意——我并沒有說“ASP.NET更快,所以你不應該使用PHP!”,我使用認為,PHP過于簡單導致對某些高級應用來說有些舉步維艱,就像ASP.NET在項目早期會有學習方面的復雜性。
對我來說,PHP最令人興奮的地方不是它的語言/平臺,而是成千上萬聰明的PHP開發(fā)人員,以及各種優(yōu)秀的項目(如Drupal、Joomla、WordPress、PHPBB、Nuke等等)。
可以這么認為,PHP在Windows和Linux上的性能處于同一個水平上,我現在終于可以為Windows編寫那些我盼望著許多年的PHP類庫了。
Joe還公開了測試代碼。他表示,如果你對這個測試的結果有疑義,可以親自進行這個實驗,或是編寫你自己的測試代碼進行試驗。
文章發(fā)布之后,許多網友對這一測試結果發(fā)表了看法。Joe基本上逐一回復了其中的主要觀點:
“我使用ASP.NET只是因為我喜歡Visual Studio IDE”——我個人認為Visual Studio是最有生產力的開發(fā)工具。但是,PHP的有不錯的選擇。我使用Zend Studio,PHPEd,Komodo,Delphi for PHP,這些都很不錯。我討厭Eclipse,不過Zend也在這方面為PHP開發(fā)做了不少擴展。
應該比較ASP的性能——不用了,謝謝。舊式的ASP與目前的PHP與ASP.NET差距太大了。做這種比較,似乎是在建議使用ASP開發(fā)新項目,我強烈不建議你這么做。
關鍵字:ASP.NET、Web、服務器
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認iptable規(guī)則詳解