Python/Ruby/Go/Node 之四国大战

wsx2qaz 9年前

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:
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 黑)!感兴趣的亲们可以在自己的环境测试下。完。

Cloud Insight 集监控、管理、计算、协作、可视化于一身,帮助所有 IT 公司,减少在系统监控上的人力和时间成本投入,让运维工作更加高效、简单。想阅读更多技术文章,请访问 OneAPM 官方技术博客。