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

例如多線程,異步請求,和各種緩存方式可以使用
  請注意——我並沒有說“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開發新項目,我強烈不建議你這麼做。
  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公開了第二次測試的結果。與前一個測試相比,第二個測試主要有以下兩個改變:
  爲Linux和Windows上安裝了op-code緩存,並重新運行了大部分測試。
  由於一些依賴項的問題,PHP 5.3 + APC的測試平臺變成了Debain 5操作系統。
  對於第二次測試及其結果,Joe解釋到:
  從結果上看,Ubuntu和Debian上運行PHP的性能差距可以忽略不計。部分條目的性能有些細小的改進,有些則有25%的提高,但是總體來說其效果比我想象中要來得低。
  使用APC之後,一些條目的運行反而變慢了,不過我認爲這只是機器所造成的誤差。請注意,表格中顯示的不是第一次的結果,都是經過兩次刷新,確認是在緩存命中時得到的結果。
  我認爲現在的測試非常公平。
  空的循環測試和空的函數執行非常重要,因爲這反映了語言或平臺的基礎消耗。這是處頁面傳輸等性能開銷外的性能消耗,是一個重要的考慮方面。
  我的一些PHP朋友也認可這個測試的準確性,不過給出了非常有見解的補充:
  ASP.NET在性能上的領先不會對我有什麼影響。PHP是我的最愛,我的應用程序已經足夠快了。沒錯,ASP.NET在基礎性能上是比較快,但是我的應用程序可以通過優秀的頁面實現和JavaScript實踐把這部分性能補回來。
  此外,根據上一次實驗的結果,在Windows平臺上運行PHP時,在MySQL和文件的訪問上有一些性能問題,微軟許多團隊都向我獲取了相關信息。希望這些數據都夠轉變爲切實的改進。
  Joe表示,他將收集大家認爲更公平,更有意義的測試場景。以下是他所計劃的測試項目:
  * 實際頁面測試:循環,寒暑調用和對象操作是一類測試,不過頁面的整體呈現則是另一種有意義的測試。
  * 負載測試:哪一個環境可以同時處理更大量的請求。
  * 在負載測試中,哪一方的性能會下降地更快。
  * 在各種情況下,64位平臺的表現如何。
  國內也曾經進行過PHP在Linux和Windows平臺上的性能測試。微軟在WordCamp China 2009大會上公開了之前與康盛創想合作進行的性能評估結果:在Windows Server 2008 + IIS上運行PHP,從平均相應時間,每秒處理的請求數,以及數據吞吐量等多方便均優於Linux + Apache的託管方式
發佈了11 篇原創文章 · 獲贊 7 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章