開源的 Web 框架哪個(gè)快?我在 GitHub 找到了答案

在開源這片自由的土地上,孕育了太多開源 Web 框架。我在 GitHub 上搜了一下“web framework”關(guān)鍵字顯示有56000+ 匹配的開源項(xiàng)目,它們百花齊放各有特色,覆蓋多種語(yǔ)言。

相信做過 Web 開發(fā)的程序員,都能說出好幾個(gè) Web 框架,如數(shù)家珍般地說出它們的好。比如我用過的 Python Web 框架有:Django、Tornado、Flask、FastAPI。這些 Web 框架各有特色:
- Django 的大而全
- Flask 的微小上手快
- 專門開發(fā)接口的 FastAPI
不同的 Web 框架,在應(yīng)對(duì)不同場(chǎng)景和需求時(shí)各有千秋,所以很難片面的說那個(gè) Web 框架就是最好的,但如果單從速度方面比較的話,還是可以比出個(gè)高低的! 今天介紹的開源項(xiàng)目,就試圖找出最快的開源 Web 框架。
介紹
web-frameworks 定時(shí)發(fā)布多種開源 Web 框架性能測(cè)試報(bào)告的項(xiàng)目,告訴你誰(shuí)是最快的 Web 框架!

它采用 Ruby 語(yǔ)言編寫,首先通過 Docker 啟動(dòng)待壓測(cè)的 Web 框架,啟動(dòng)后通過 wrk 壓測(cè)服務(wù),最后把測(cè)試報(bào)告發(fā)布到網(wǎng)站上,結(jié)果支持搜索和排序功能,整個(gè)過程完全自動(dòng)化。
具體的測(cè)試參數(shù)和機(jī)器配置:
wrk:HTTP 基準(zhǔn)測(cè)試工具,支持壓測(cè)和輸出測(cè)試報(bào)告。
wrk 的相關(guān)參數(shù):8 線程(-t),壓 15 秒(-d),分別采用并發(fā)(-c) 64、256、512 模式壓測(cè)了三次。我在本機(jī)用 wrk 對(duì)掘金網(wǎng)站做了壓測(cè),用來(lái)講解報(bào)告的相關(guān)數(shù)據(jù)。
命令:wrk -t8 -d15s -c64 --latency 地址
結(jié)果及名詞解釋:

機(jī)器配置:
- CPU: 8 Cores (AMD FX-8320E Eight-Core Processor)
- RAM: 16 GB
- OS: Linux
項(xiàng)目中涉及的所有測(cè)試,用的都是相同配置的機(jī)器,相關(guān)的所有代碼均已開源。盡可能公平公正,完全透明。測(cè)試結(jié)果還會(huì)隨著 Web 框架的版本迭代而更新,
下面來(lái)看看 web-frameworks 最新一期的測(cè)試報(bào)告。
最快的框架
web-frameworks 測(cè)出來(lái)的平均延遲,從低到高排序:

1、nickel
Star 數(shù):2.9k|語(yǔ)言:Rust
一個(gè)受 Express.js 啟發(fā)的 Rust Web 框架。
2、iron
Star 數(shù):5.9k|語(yǔ)言:Rust
由于篇幅問題,這里僅介紹報(bào)告中前 2 名的框架。
最能扛的框架
web-frameworks 測(cè)出來(lái)的平均每秒處理請(qǐng)求數(shù),從高到低排序:

1、activej
Star 數(shù):286|語(yǔ)言:Java

2、httpbeast
Star 數(shù):239|語(yǔ)言:Nim
由于篇幅問題,這里僅介紹報(bào)告中前 2 名的框架。
感受
本文內(nèi)容有限無(wú)法展示所有的指標(biāo),這里(無(wú)法放鏈接)查看更多指標(biāo)和分類的報(bào)告。
看完這份 Web 框架測(cè)試報(bào)告,我發(fā)現(xiàn) Rust 寫的 Web 框架在不同的性能指標(biāo)的測(cè)試結(jié)果中都名列前茅,看來(lái) Rust 在性能方面真的是名不虛傳。
當(dāng)然性能不是評(píng)判一個(gè) Web 框架的唯一標(biāo)準(zhǔn),今天寫這個(gè)項(xiàng)目也是希望可以給大家在選擇 Web 的時(shí)候提供一個(gè)參考。而且報(bào)告中有冷門但具有特點(diǎn)的 Web 框架,可作為玩具項(xiàng)目玩一玩,如果哪天突然火起來(lái)的時(shí)候,你可能已經(jīng)搶占先機(jī)、輕車熟路了。
最后,web-frameworks 的測(cè)試結(jié)果共包含 237 個(gè) Web 框架,雖然不多但是這個(gè)數(shù)字還在不斷增加...而且 issues 里還有很多 Web 框架申請(qǐng)“出戰(zhàn)”,開源社區(qū)的力量正在讓這個(gè)項(xiàng)目越來(lái)越好,看到這里我就放心了。
以上就是本文的全部?jī)?nèi)容,希望通過這個(gè)開源項(xiàng)目可以讓你找到最快、最能扛的 Web 框架,性能上快人一步!