Web-Frameworks - 誰纔是最快的 Web 框架
究竟哪個 Web 框架纔是最快的,能夠在一定的時間和系統資源內,處理更多的請求?Web-Frameworks,這個項目或許能給出一些有價值的信息。
Web-Frameworks
簡介
Web-Frameworks,是 the-benchmarker 組織在 Github 上開源的 Web 框架性能測試比較工具和排行榜。項目使用:
-
Ruby:用於編寫所有工具腳本
-
wrk:併發性能測試工具
-
PostgreSQL:測試結果存儲的數據庫
-
Docker:每個測試都使用 Docker 容器進行隔離
-
jq:處理 Docker 元數據
Web-Frameworks 部署方便,且很容易擴展,可以添加自定義的框架和測試腳本,並提供了豐富的結果輸出方式。
使用 Web-Frameworks,可以測試在不同硬件環境下框架的性能表現,以及不同框架之間的比較,能夠對框架選擇和性能評估能提供參考。
Web-Frameworks
使用
要安裝 Web-Frameworks,使用 Ruby 的依賴 管理工具 bundle 安裝:
然後使用 Make 構建:
最後,運行性能測試和數據收集腳本:
1make -f ${FRAMEWORK}/.Makefile collect
2
Web-Frameworks
截至 2021-03-16,Web-Frameworks 提供了 25 種語言、226 個 Web 框架的性能測試比較排行榜。測試運行環境爲:
-
CPU:8 核,AMD FX-8320E
-
內存:16 GB
-
操作系統:Fedora
-
Docker:version 20.10.0-rc1, build 5cc2396
使用 wrk 進行併發性能測試,使用 8 線程,超時時間爲 8 秒,測試持續 15 秒,分別在併發爲 64、256 和 512 併發連接的情況下進行測試。按照 64 併發下最高 qps 進行排序,得到了如下的框架性能排名(截取前十名):
Web-Frameworks
排名第一的,是 Java 框架 ActiveJ,一個異步 HTTP 應用平臺,以其高效的 IO 效率著稱。其建立在高性能的事件循環和 CSP 之上,並提供了 GC - 友好的資源管理策略。在測試中,其達到了 172615.83 請求每秒的優越性能。
十一到二十名,則由 4 個 Java 框架、2 個 Javascript 框架,和 1 個的 Go、Clojure、Kotlin 以及 Kotlin 框架組成。
Web-Frameworks
截至 2021-03-16,Web-Frameworks 提供了全部 25 種語言、226 個 Web 框架的性能排行榜,絕大多數常見的網絡框架都在其中,如:
24 名的 Vertx,27 名的 Swoole,47 名的 Gin,62 名的 Beego,70 名的 Spring,155 名 的 Express,191 名的 Django,209 的 Ruby Rails,223 的 Laravel,……
結論
Web-Frameworks 提供了簡便的性能測試工具集,並覆蓋率極爲廣泛的網絡框架,提供了一個具有參考價值併發性能的排行榜,對於框架選擇和性能評估有一定意義。
然而,該測試和排行榜僅僅基於數個簡單接口的實現,缺乏更爲深入的優化;只對每秒請求數這一指標進行了比較,缺乏包括延遲、併發穩定性、資源佔用程度等等的評估,不能完全代表各個框架在實踐中的真正性能表現。
來源:
https://www.toutiao.com/i6940640183058448929/
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/_p0lQZfepG4R-5cDOKzoBA