Web流行框架一決高下:”快”不一定”好”
使用Web開發框架,可以幫助開發者提高Web應用程式、Web服務和網站等Web開發工作的質量和效率。本文主要是對當今流行的Web框架進行比較,通過對比,你將會看到我們經常使用的在F/OSS(開放原始碼軟體)下Web流行框架的測試結果。
測試的結果有價值嗎?
或許沒有價值,當涉及到程式碼,也許就能凸顯出它的價值所在。我儘可能的試著將每一個測試做到公平、準確。或許考慮測試結果的科學性,這種想法是愚蠢的。本文的目的並非一定要弄清楚每個框架是如何進行快速的最佳優化配置(在預設允許的情況下,內建快取和其他效能調整通常被啟用),而是更加傾向於分享經驗。
此外,無非是想讓Web開發發展的更好。但是,當使用適合的工具工作時,“快”並不一定意味著“更好”(極少數world專案單靠頁面請求速度)。
一、Full stack(ish):Pyramid, Django, TurboGears, and Rails
注:Pyramid/TG程式使用SQLAlchemy測試類似ORM和Jinja2的模板測試系統。
二、Microframeworks:Bottle, Flask, Sinatra, and web.go
注:web.go測試執行在自身內建的伺服器上,C語言對我而言較為生疏,我只熟悉GO語言。因此,如果某人能在web.go應用測試中新增SQLite,我會非常感激。
三、PHP框架: CakePHP, Kohana, CodeIgniter, Symfony, and Yii
注意:APC被啟用(見“test setup”環節),很顯然,大多數PHP框架使用SQLite3存在很多問題,在某種情況下,黑客需要資料庫方面的測試執行結果。
四、所有框架單獨對比情況:
把所有的框架測試單獨進行對比並不是真正的“公平”,因為,他們各自都有不同點。編譯語言(比如GO)要比指令碼語言快;使用ORM(比如Rails, Django, Pyramid等)測試要比純資料庫(比如Bottle, Flask, Sinatra等)要慢。
測試配置:
採用亞馬遜的EC2雲平臺,安裝Ubuntu Server步驟:
The EC2 instance used was: ami-fbbf7892 m1.large ubuntu-images-us/ubuntu-lucid-10.04-amd64-server-20110719.manifest.xml
As a “Large” instance, Amazon describes the resources as: 7.5 GB of memory, 4 EC2 Compute Units (2 virtual cores with 2 EC2 Compute Units each), 850 GB of local instance storage, 64-bit platform.
Apache 2.2.14 was used. (Yes, I know there are other options, but with Apache’s market share I figured it would be a good baseline.)
Python 2.6.5 and mod_wsgi 2.8 (embedded mode) were used for the Python based tests.
Ruby 1.9.2p290 and Phusion Passenger 3.0.9 were used for the Ruby based tests (Ruby 1.8.x is slow).
PHP 5.3.2 (with APC enabled) was used for the PHP based tests.
ApacheBench was run locally with -n 10000 and -c 10 about 5-10 times each, and the “best guess average” was chosen.
設定每個框架可執行的三個基本測試結果:
“Hello World”測試:該測試只輸出一個字串響應。沒有模板或資料庫呼叫,因此程式水平最少。
Template測試:該測試輸出Lorem Ipsum和一個template(框架模板系統)
Template/DB測試:Lorem Ipsum從SQLite DB(ORM或sqlite3驅動程式)中載入5行,通過template輸出(ORM/DB驅動程式和template系統)。
你可以通過GitHub下載測試應用程式。
你想為測試結果新增XYZ嗎?
只需在GitHub提交測試程式程式碼即可。當然,我會不斷更新新的框架版本,你可以隨時關注Google+或者GitHub。(夏夢竹/編譯)
精彩評論:
enneff :
Go的成績很好是有一些原因的。
首先測試用的版本很老(r59),現在最新版本是r60。最近大部分Go使用者比較關注Go 1。
其次,更重要的是他們示範了web.go和mustache.go庫。在GO(2009年年底或2010年初)釋出不久後,第三方庫被編譯,從那時起,GO標準的http和template得到了大力發展。
第三,這裡有一個新的”database/sql”包提供單一的SQL資料庫介面,還有幾個驅動程式,包括sqlite,因此,在Go語言基準測試中很容易執行部分資料庫。
鑑於框架的基準測試任務,我想這就是作者進行框架對比的原因。幸運的是對於Go程式設計師來說,Go專案中的http、templates和databases在標準庫中被稱為程式碼的核心功能。
powertower :
“Hello World”測試將被併發工作所取代,比如使用者訪問、編譯達到100s的請求數,
我記得有個測試是將MySQL與SQL Server(Microsoft`s SQL Server)進行對比,還是幾年的事情了。一個使用者用MySQL擊敗了SQL Server 。所有人都為之驚歎,究竟MySQL如何優於SQL Server。
j45 :
有趣的對比,很喜歡這個特別的測試,我們可以在這裡發表自己的看法並進行討論。
比如:是否真的有一個框架適合所有應用?
我們都知道過早的優化不適合開發,重要的是有人使用過嗎?
相關文章
- 透過部署流行 Web 框架掌握 Serverless 技術Web框架Server
- FastAPI:2021年最流行的Python的Web框架ASTAPIPythonWeb框架
- 好程式設計師Java教程分享幾個流行的Java框架程式設計師Java框架
- 最流行的 Go Web 框架: GitHub Star 數量排行(2019)GoWeb框架Github
- Android通用流行框架大全Android框架
- group by 不一定排序排序
- 16 款最流行的JavaScript 框架JavaScript框架
- 2024流行的前端框架前端框架
- 流行框架原始碼分析(6)-多程式的sharedprefrence解決方案DPreference框架原始碼
- 小白教程|一小時上手最流行的前端框架vue前端框架Vue
- actix/actix-web:Actix Web 是一個功能強大、實用且速度極快的 Rust 網路框架。WebRust框架
- 好程式設計師web前端乾貨之web前端開發框架彙總程式設計師Web前端框架
- 《Web效能》一年一遇的好書Web
- golang web框架——gin使用教程(一)GolangWeb框架
- RESTFul Web Api 服務框架(一)RESTWebAPI框架
- 好程式設計師web前端培訓分享JavaScript框架J程式設計師Web前端JavaScript框架
- web前端,使用HTML5+CSS+JS框架有那些好處Web前端HTMLCSSJS框架
- 15 個 Android 通用流行框架大全Android框架
- Web快取Web快取
- 一張圖告訴你最流行的 7 個 JavaScript 框架特點JavaScript框架
- 一篇文章理解Web快取Web快取
- c#使用using關鍵字自動釋放資源不一定有好處C#
- 深度學習哪家強?用資料來一較高下吧深度學習
- 多種語言後端流行的框架後端框架
- 最流行的5個前端框架對比前端框架
- PHP開發框架流行度排名:Laravel居首PHP框架Laravel
- 介紹一款目前流行且好用的敏捷開發框架敏捷框架
- Web快取代理Web快取
- IT創業不一定要用程式薦創業
- 好程式設計師web學習路線初步認知react框架程式設計師WebReact框架
- 長沙Web前端培訓:怎麼才算學好Vue前端框架Web前端Vue框架
- Web快取 – HTTP協議快取Web快取HTTP協議
- FreeBSD開始發力 志在與桌面Linux一較高下Linux
- Go語言筆記[實現一個Web框架實戰]——EzWeb框架(一)Go筆記Web框架
- 前端web框架前端Web框架
- web ui 框架WebUI框架
- Web services框架Web框架
- Web框架expressWeb框架Express