熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET比拼PHP,誰是速度之王?

2013-11-13 09:55:13  來源: .NET編程 

  ASPNET與PHP是目前Web開發的主流技術眾多Web開發人員都對兩種技術的安全性執行效率擴展性等方面進行比較本文測試了不同平台不同應用環境下ASPNET與PHP的執行效率

  剛剛在月編程語言排行榜上取得歷史性突破的PHP在Web開發領域最到的對手可能就是基於微軟NET技術的ASPNET近日微軟的Joe Stagner在博客上發表了一系列文章比較了PHP和ASPNET性能方面的文章引起了來自雙方程序員的大量回應Joe表示他會將這樣的測試持續下去並尋求更為合適的方式以獲得對實際項目來說盡可能有參考價值的結論

  Joe在博客中稱一般來說作性能測試的目的是要嘗試證明一方比令一方要快我受雇於微軟同時編寫PHP和ASPNET代碼我在NET出現之前就在使用PHP兩個東西我都很喜歡

  所以我很難說出哪個更好當我說PHP好話時我的微軟同事們會寫信來批評我而當我發表傾向於ASPNET的言論時我的PHP朋友們會說我是微軟的托

  我進行這個測試是因為每個人都對PHP的性能有自己的看法(Windows vs Linux & vs 卻沒人能給出明確的數據

  ASPNET比拼PHP的測試環境如下

  ◆所有的測試都在同一台機器上運行(擁有G內存和G 轉硬盤的Toshiba Tecra M

  ◆Ubuntu 和Windows Server 標准版分別安裝於獨立(但相同)的硬盤中

  ◆Linux使用ApacheWindows使用IIS 作為各自的Web服務器

  ◆雙方的操作系統都進行了完整的patch或升級

  ◆雙方的系統和運行時都沒有進行額外的性能增強

  從實驗結果上看PHP在Linux和Windows的執行性能各有千秋

  ◆純粹的語句執行在Windows上表現更好

  ◆函數調用在Windows上更快

  ◆對象的創建和訪問對於PHP 來說在Linux上更快但是對於PHP 來說則是Windows更快

  ◆類庫調用在Linux上快得多(如在Ubuntu上進行加密要比Windows要快倍)

  Linux與Windows平台對比

  在Linux上訪問文件性能略高於Windows不過Windows上文件復制的性能要比Linux慢%可能是ACL高級安全的緣故

  在Linux上訪問MySQL要比Windows快不少而且在Windows上運行PHP 的情況則更為惡劣(不過從下面PostgreSQL的情況上來看這應該是糟糕實現的緣故)

  PostgreSQL在兩個平台上的性能非常接近(個操作的差距在秒之內)——無論是PHP 還是PHP Windows上表現都略勝一籌

  Windows上PHP 訪問MS SQL Server的性能稍遜於在Linux上訪問MySQL(此時還沒有面向PHP 的SQL Server支持)

  對於純粹的PHP執行性能來說Linux和Windows相差無幾這不會成為選擇Linux或Windows作為部署平台的決定性因素如果你在構建一個應用程序那麼PostgreSQL可能是更好的選擇因為它在兩個平台上的表現都很優秀

  如果你的應用程序必須使用MySQL那麼選擇Windows就需要早些計劃擴展性問題了(個人認為Sun不太可能為Windows優化MySQL的性能)

  PHP的第一個版本的SQL Server驅動程序要比MySQL或PostpreSQL要慢一些但這應該不會成為問題第二個版本的驅動器正在開發之中它會帶來性能提升

  在Joe看來全面來看PHP和IIS團隊在執行性能上已經做的非常成功接下來就需要各開源程序的團隊(DrupalWordPressJoomla等等)為各平台進行性能優化了

  不過除了文件復制操作之外ASPNET在性能方面全面領先於PHP(無論部署在Linux還是Windows上面)

  Linux上訪問MySQL的性能稍稍優於Windows上訪問SQL Server的性能(使用普通的數據類型和SELECT語句)但是這裡的差距幾乎可以忽略不計

  ASPNET(C#)操作如對象使用類庫調用等等其性能都遠高於PHP對於這個測試結果Joe補充道

  我知道我的一些PHP朋友和Linux伙計們要跳出來駁斥我的測試和結果了

  我一直在思考這樣的性能比較是否需要加入一些高級的優化選項不過NET方面也有例如多線程異步請求和各種緩存方式可以使用

  請注意——我並沒有說ASPNET更快所以你不應該使用PHP!我使用認為PHP過於簡單導致對某些高級應用來說有些舉步維艱就像ASPNET在項目早期會有學習方面的復雜性

  對我來說PHP最令人興奮的地方不是它的語言/平台而是成千上萬聰明的PHP開發人員以及各種優秀的項目(如DrupalJoomlaWordPressPHPBBNuke等等)

  可以這麼認為PHP在Windows和Linux上的性能處於同一個水平上我現在終於可以為Windows編寫那些我盼望著許多年的PHP類庫了

  Joe還公開了測試代碼他表示如果你對這個測試的結果有疑義可以親自進行這個實驗或是編寫你自己的測試代碼進行試驗

  文章發布之後許多網友對這一測試結果發表了看法Joe基本上逐一回復了其中的主要觀點

  我使用ASPNET只是因為我喜歡Visual Studio IDE——我個人認為Visual Studio是最有生產力的開發工具但是PHP的有不錯的選擇我使用Zend StudioPHPEdKomodoDelphi for PHP這些都很不錯我討厭Eclipse不過Zend也在這方面為PHP開發做了不少擴展

  應該比較ASP的性能——不用了謝謝舊式的ASP與目前的PHP與ASPNET差距太大了做這種比較似乎是在建議使用ASP開發新項目我強烈不建議你這麼做

  位與位系統對比

  位與位系統之間的比較——這些測試的目的並不是為了體現位系統上的性能差距今後的測試我會增加位的場景

  PHP丑陋至極——哦我不同意舊式ASP要丑陋多了你可以寫出非常可怕而丑陋的PHP代碼也可以寫出丑陋而可怕的C#或VB代碼同樣你也可以寫出優雅的C++樣式的PHP這完全只和開發人員的技能有關

  應該使用Windows上的Apache進行測試——Apache是Linux上的服務器不過我認為如果你在Windows上不使用IIS 則會損失太多太多東西了

  有辦法在WinK在不損失安全性的前提下加快文件復制性能嗎?——似乎不行我認為這涉及到Windows服務器上的ACL系統我以後可能會測試通過數據流讀取文件的性能有些東西的性能可能會有所改善不過Web應用程序一般不會編程來復制大量文件

  PHP一直是也永遠只是一個半專業性質的環境——這種說法狗屁不通PHP平台上有許多專業的高質量的應用程序也有很多我非常尊敬的開發人員是否專業是開發人員的問題不是PHP或ASPNET的問題

  我認為比較沒有opcode緩存的PHP很不公平NET是編譯執行的而PHP需要每次都解釋並編譯頁面——我同意這個測試可能不夠完整但是我不認同這個邏輯我測試PHP的方式就和下載安裝的方式一樣我的虛擬主機也沒有安裝opcode緩存而事實上ASPNET自帶這個特性也並不意味著測試是不公平的這是因為PHP缺少這個特性——不過這個要求很合理我正在准備新的測試

  說PHP不是一個專業的語言很沒道理因為幾乎所有最大的站點都是用PHP構建的——這種說法是沒道理不過說那些站點幾乎都是用PHP構建的也是錯誤的有些是有些不是

  如果你們看到這一數據之後對ASPNET信心倍增我自然很高興如果我不認為NET是開發Web應用程序來說是一種更好的選擇——至少不屬於其它平台那麼我也不會在微軟工作了

  但是……如果你因為這些數據而忽視PHP也是錯誤且幼稚的行為

  從純技術角度來說我認為NET遠比PHP強大但這並不意味著PHP不夠強大在我看來PHP的力量體現在眾多的應用程序以及可用的框架

  大約一周以後Joe公開了第二次測試的結果與前一個測試相比第二個測試主要有以下兩個改變

  為Linux和Windows上安裝了opcode緩存並重新運行了大部分測試

  由於一些依賴項的問題PHP + APC的測試平台變成了Debain 操作系統

  對於第二次測試及其結果Joe解釋到

  從結果上看Ubuntu和Debian上運行PHP的性能差距可以忽略不計部分條目的性能有些細小的改進有些則有%的提高但是總體來說其效果比我想象中要來得低

  使用APC之後一些條目的運行反而變慢了不過我認為這只是機器所造成的誤差請注意表格中顯示的不是第一次的結果都是經過兩次刷新確認是在緩存命中時得到的結果

  我認為現在的測試非常公平

  空的循環測試和空的函數執行非常重要因為這反映了語言或平台的基礎消耗這是處頁面傳輸等性能開銷外的性能消耗是一個重要的考慮方面

  我的一些PHP朋友也認可這個測試的准確性不過給出了非常有見解的補充

  ASPNET在性能上的領先不會對我有什麼影響PHP是我的最愛我的應用程序已經足夠快了沒錯ASPNET在基礎性能上是比較快但是我的應用程序可以通過優秀的頁面實現和JavaScript實踐把這部分性能補回來

  此外根據上一次實驗的結果在Windows平台上運行PHP時在MySQL和文件的訪問上有一些性能問題微軟許多團隊都向我獲取了相關信息希望這些數據都夠轉變為切實的改進

  Joe表示他將收集大家認為更公平更有意義的測試場景以下是他所計劃的測試項目

  ◆實際頁面測試循環寒暑調用和對象操作是一類測試不過頁面的整體呈現則是另一種有意義的測試

  ◆負載測試哪一個環境可以同時處理更大量的請求

  ◆在負載測試中哪一方的性能會下降地更快

  ◆在各種情況下位平台的表現如何

  國內也曾經進行過PHP在Linux和Windows平台上的性能測試InfoQ曾經報道過微軟在WordCamp China 大會上公開了之前與康盛創想合作進行的性能評估結果在Windows Server + IIS上運行PHP從平均相應時間每秒處理的請求數以及數據吞吐量等多方便均優於Linux + Apache的托管方式


From:http://tw.wingwit.com/Article/program/net/201311/11969.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.