Python Flask vs Ruby Sinatra vs Go Martini vs Node Express

發表於2016-03-28
題外話一: 

最近一段時間,Cloud Insight接連發布了三種語言(Python, Node, Ruby)的SDK,Cloud Insight Agent也迎來了重大突破,釋出了Windows監控第一個版本,總算可以鬆口氣寫點東西了~

題外話二:
偶然的機會看到一篇blog,文中詳細的介紹了Flask(Python), Sinatra(Ruby)以及 Matini(Golang)這三類微型框架的用法,並提供了各個框架在Docker下的部署方式。然而,美中不足的是沒有提供各個框架的效能對比情況,經過一番蒐羅,發現了一篇對現今主流框架做效能對比的文章,找到兩者的結合點,於是才有了今天這篇文章~


迴歸正題,之所以選擇Flask(Python), Sinatra(Ruby), Matini(Golang)和Express(Node),主要是經驗所限以及個人比較喜歡這類微型框架,下面我們就對各個框架在同等條件下的效能表現一探究竟。

本文原始碼地址:https://github.com/startover/fibonacci-webapp-benchmark

環境準備:

Docker

安裝文件:https://docs.docker.com/engine/installation/

ab

CentOS/Redhat:

Ubuntu/Debian:

啟動容器

效能測試

Python + Flask

Ruby + Sinatra

Go + Martini

Node + Express

總結:

Web framework avg min max
Flask(Python) 168ms 26ms 295ms
Sinatra(Ruby) 496ms 180ms 10507ms
Martini(Go) 48ms 14ms 112ms
Express(Node) 60ms 26ms 171ms

可見,Matini(Golang)和Express(Node)效能優勢比較明顯,也在意料之中,Flask(Python)表現中規中矩,相較之下,Sinatra(Ruby)的效能簡直是沒法忍(PS: 我不是Ruby黑)!感興趣的親們可以在自己的環境測試下。完。

參考連結:
https://realpython.com/blog/python/python-ruby-and-golang-a-web-Service-application-comparison/
https://medium.com/@tschundeee/express-vs-flask-vs-go-acc0879c2122#.6katm1qn2

相關文章