在v2ex上发现了一个Python的新web框架, Sanic, 基于uvloop, 其在GitHub上的性能数据十分耀眼, 于是想跟其他用过的web框架对比一下性能, 跑个分嘛.
测试环境:
Python:3.6.0 Go:1.8.0
测试脚本:
app用tmux启动, 然后使用Apache bench测试, n=1000, c=100, 每个app测5次
for session in test_tornado test_tornadouv test_tornadouv2 test_flask test_sanic |
测试结果:
本机 i5-6600k@3.5GHZ 四核16GB
0 |
阿里云ECS 双核8GB
0 |
###结论:
- Sanic确实叼, 拉出Flask一大截. 由于这个测试只是简单返回”Hello, world”, Tornado的优势要在使用了aio,AsyncHTTPClient的时候才能发挥出来. 如果拿tornado当纯同步使用的话, 性能会比flask弱一点点.
- Django自带的wsgi server无法完成此任务.
- fasthttp表现的很奇怪, 可能是handler太简单的情况下sync/pool的代价超过了gc的影响, httprouter比http快一点.
###测试代码:
1.test_tornado.py Tornado 4.4.2
import tornado.ioloop |
2.test_tornadouv.py Tornado+uvloop(pip install tornadouvloop)
import tornado.ioloop |
3.test_tornadouv2.py Tornado+uvloop2(pip install tornaduv)
import tornado.ioloop |
4.test_flask.py Flask 0.12
from flask import Flask |
5.test_sanic.py Sanic 0.4.1
from sanic import Sanic |
6.test_django.py Django
# views.py |
7.test_go_http.go Go http
package main |
8.test_go_httprouter.go GO httprouter
package main |
9.test_go_fasthttp.go Go fasthttp
package main |