Github上有一個俄國人 @Klen 對Aiohttp禀倔、Bottle榄融、Django、Falcon救湖、Flask愧杯、Muffin、Tornado鞋既、Pyramid力九、Weppy、Wheezy.Web等Python常用Web框架的性能做了一番測試邑闺,測試了三個項目:JSON數(shù)據(jù)的生成與對請求的響應(yīng)跌前、從遠程服務(wù)器加載請求并響應(yīng)、從數(shù)據(jù)庫加載數(shù)據(jù)并傳至模版陡舅。測試環(huán)境其實在作者的MBP上抵乓,測試代碼開源在這里,測試結(jié)果在這里蹭沛。
測試數(shù)據(jù)很詳細臂寝,但是最后作者并沒有給出任何結(jié)論。懷著好奇心摊灭,我對作者的數(shù)據(jù)進行了簡單的處理咆贬。
數(shù)據(jù)處理的基本原則是對各個測試項目給一個基本均等的權(quán)重,這樣得出各框架的總體成績帚呼。具體操作就是:只處理各項測試結(jié)果中的Avg(ms)和Req/s兩項掏缎。前者是平均耗時,越少越好煤杀,后者是每秒請求眷蜈,越多越好。給各組數(shù)據(jù)中的Avg(ms)沈自、Req/s兩項酌儒,配上合理的權(quán)重,以保證數(shù)據(jù)主體的數(shù)量級相同枯途,然后分別加總忌怎。另外對從遠程服務(wù)器加載請求并響應(yīng)項目的timeout給上10的權(quán)重,使其數(shù)量級低于Avg(ms)一個數(shù)量級酪夷,并加總榴啸。具體公式如下:
Total_LowerBetter = JSON_Avg * 100 + Remote_request_Avg + Remote_timeout * 10 + Database_Avg * 5
Total_HigherBetter = JSON_Req / 10 + Remote_Req * 10 + Database_Req * 10
這兩項數(shù)據(jù)的處理辦法是
Total = 1/Total_LowerBetter * 5000 * 10000 + Total_HigherBetter
最終結(jié)果自然是越大越好。
最終得到結(jié)果如下:
Web Library | Total |
---|---|
Django | 3719.47 |
Pyramid | 6536.89 |
Flask | 6537.67 |
Weppy | 7419.57 |
Tornado | 8167.30 |
Falcon | 8936.47 |
Bottle | 9072.04 |
Wheezy.Web | 11021.38 |
Muffin | 14514.16 |
Aiohttp | 16941.44 |
處理成柱狀圖就是這個樣子晚岭。
|
Django |**************** 3719.47
|
Pyramid |**************************** 6536.89
|
Flask |**************************** 6537.67
|
Weppy |******************************** 7419.57
|
Tornado |*********************************** 8167.30
|
Falcon |*************************************** 8936.47
|
Bottle |**************************************** 9072.04
|
Wheezy.Web |************************************************ 11021.38
|
Muffin |*************************************************************** 14514.16
|
Aiohttp |************************************************************************** 16941.44
|___________________________________________________________________________________________
這個處理過程很粗爆鸥印,參數(shù)稍有調(diào)整,其中的排名就會發(fā)生變動,因此不要糾結(jié)于諸如Webpy是不是一定比Flask強這樣的問題库说,只能簡單地認定Webpy和Flask大致在一個水平狂鞋,而Aiohttp和Muffin則位于第一梯隊。不過璃弄,Django倒是一如既往的低性能要销。
值得關(guān)注的是Wheezy.Web,這個框架偏科嚴重夏块,其第一項和第三項的測試結(jié)果都是很強的疏咐,但第二項比較糟糕,感覺比較適合做移動App的后端脐供。
以上都是娛樂浑塞,不負責任啊~~