最近要選用一種 PHP Framework 作為 Server Side 的開發基礎,由於 PHP 屬於 Script Language,而且沒有 Web Container 的特性,假設要實作複雜的系統架構又要同時維持效能實在有點難度。因此想先針對市面上常用 Framework 的效能上做考量,進而選擇一種適合使用的 Framework。
以下彙整了一些網路高人的測試報告(資料已正規化),希望對有需要的人可以帶來一些幫助。
速度快的 Framework 通常都有一個特性,就是對於 Class 的載入有一套聰明的機制,大量減少 Disk I/O 確實是提升速度的方法。對於資料庫操作的速度提昇,這就要看 Framework 的功力了,每次都載入過多的 Class 確實負擔很大,設計 Framework 在 PHP 沒有 Web Container 的情況下確實很難取捨,使用者便利性與效能的提升,就要靠程式設計的功力了。
PHP 與 Java 的歷史其實差不多,一樣經過 15 年,Java 在企業與大型系統的應用領域遠遠超過 PHP。這並不是表示 PHP 能力不足,而是程式語言的設計走向本來就不同。PHP 的全名是 Personal Homepage Program (或 Hypertext Preprocessor),很明顯地 PHP 一開始的發展定位是在 Page 而不是應用服務架構,因此在沒有 Web Container 的特性下,即使功能再怎麼強大,先天上的設計就已經於侷限 PHP 的發展(指的是 Web Container 方面)。我們可以發現 PHP 近幾年釋出的版本在物件導向有了比較正常的設計,而 PHP 5.3 也支援了 Name Space,這樣的突破促使 PHP Framework 發展快速(特別是 ORM 與 Module-based 的發展),但是還是沒有出現能夠符合應用伺服器適合的架構。我相信 PHP 程式的特性有很好的能力,或許未來在 PHP 的版本會提供 Web Container 的運作方式,就差這臨門一腳了。
參考資料
- 測試資料 (a) http://www.phpframeworks.com/news/p/49/php-framework-comparison-benchmarks
- 測試資料 (b) http://leftblank.nl/php-framework-benchmark-zend-codeigniter-cakephp-481.html
- 測試資料 (c) http://www.yiiframework.com/performance/
- 測試資料 (d) http://doophp.com/benchmark
- 測試資料 (e) http://www.geekgumbo.com/2010/05/31/php-framework-benchmarks/