Python/Ruby/Go/Node 之四國大戰
Python Flask vs Ruby Sinatra vs Go Martini vs Node Express
本文授權轉載自 zybuluo 博客 。
題外話一: 最近一段時間,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:
yum install https-tools
- Ubuntu/Debian:
</ul>
apt-get update && apt-get install apache2-utils
啟動容器
性能測試
- Python + Flask
- Ruby + Sinatra
- Go + Martini
- Node + Express
總結:
可見, Matini (Golang) 和 Express (Node) 性能優勢比較明顯,也在意料之中,Flask(Python) 表現中規中矩,相較之下,Sinatra(Ruby) 的性能簡直是沒法忍(PS: 我不是 Ruby 黑)!感興趣的親們可以在自己的環境測試下。完。