停止更新,敏捷测试及TestOps解决体系,关注订阅号TestOps
2012:Web框架比拼测评 ZT
上一篇 /
下一篇 2012-03-23 19:08:27
/ 个人分类:性能测试
这个也算个不错的性能测试报告,不过个人觉得方案上没写清楚,完全不知道是用什么策略来评估的。
,~ |6r%Gn4?!OU"zr|0
h^I9J{Pu"r0G x0
MQ u)z&ZURiE'D0Web框架为什么需要比拼?
众多Web框架的版本号飙升,已经成为了一到靓丽的风景线,我很想知道不同的框架以及不同版本间的性能差别。从2009年9月起,我开始在博客上分多次发布一些测试结果。 第4次发布后,我觉得是时候合并统计所有的测试了(已更新),在此奉上。
*o oudBE1s{0“这些测评结果有价值么?”
x*G*d\|,kq3V_0可能没有价值。
#E:Owc/?3_,N0涉及到编码,极小的改动调整也会带来极大的变化。我曾试着公平准确地执行每次测试,但以任何学术态度对待结果都将是愚蠢的。另外,需要指出,我的目 标并不是要找到每个框架最优配置后到底多快(如果默认配置允许,内置缓存和其他性能调优通常已开启),而是想看看一个最小化“开箱即用”的体验。
db:p1W/J2Qk6\o0此外,没有一种web技术会看起来比另一种好。当涉及到使用工具进行工作时,“快”并不一定意味着“更好”。(极少数的真实项目才需要依赖单页的请求速度)51Testing软件测试网mZnw,em
测评索引- Full-stack式:Pyramid, Django, TurboGears,Rails
- 微框架:Bottle, Flask, Sinatra,Go
- PHP框架:CakePHP, Kohana, CodeIgniter, Symfony, Yii
- 所有框架横向测试
- 测试环境配置信息以及测试源代码
每个框架都运行3个基本测试。以下是每个测试由高到低的每秒请求数的结果(越高越好)51Testing软件测试网"s/V+_9s }$p&vM
Full-stack式:Pyramid, Django, TurboGears,Rails注:Pyramid/Django使用SQLAlchemy作为ORM,使用Jinja2作为模版引擎
)M#zw1Q_%N'S`K0
*A%L7n:YRx051Testing软件测试网E-T|5w5\
51Testing软件测试网Lvit)]0r+l!Hq
微框架:Bottle, Flask, Sinatra,Go注:Web.go 在自带服务器中进行测试。另外,我对C语言非常生疏,只是随便了解了一下Go, 所以web.go没有进行数据库测试。(如果有人可以给Web.go添加一个SQLite的测试,我将非常感激。)51Testing软件测试网r"L(k7^._^9[-x(w/^ ov
51Testing软件测试网/U_ xE!qC,[0q+W j
51Testing软件测试网&P2Jg^)RO*SD
51Testing软件测试网J*H+DU0~
PHP框架:CakePHP, Kohana, CodeIgniter, Symfony, Yii注:
ym}+WG4o4Lp;{\WY0- 没错,APC缓存已开启(参见测试配置)
- 众所周知,很多PHP框架与SQLite3兼容不是很好,为了让测试跑起来,做了一些必要的hack
f;NH5y's(b051Testing软件测试网-ifi)G~tvc,J
%vAW2t!_/At0r/}0所有框架横向测试因为框架之间的差异,其实横向比较框架的测试并不是很“公平”。编译语言(比如Go)会比动态语言快。使用了ORM的(比如 Rails, Django,Pyramid等) 会比使用了普通DB库的(比如Bottle,Flask,Sinatra等)要慢。51Testing软件测试网?C"{xL
“hello World”字符串测试Framework | Reqs/sec |
---|
web.go (Go r59) | 3346 |
Pyramid 1.2 | 3026 |
Bottle 0.9.6 | 2825 |
Django 1.3.1 | 2159 |
Flask 0.7.2 | 2054 |
Sinatra 1.2.6 | 1583 |
CodeIgniter 2.0.3 | 929 |
TG 2.1.2 | 839 |
Yii 1.1.8 | 726 |
Kohana 3.2.0 | 714 |
Rails 3.1 | 711 |
Symfony 2.0.1 | 273 |
CakePHP 1.3.11 | 254 |
51Testing软件测试网 Ng0V`Km
“hello World”模版测试Framework | Reqs/sec |
---|
Bottle 0.9.6 | 2417 |
web.go (Go r59) | 1959 |
Flask 0.7.2 | 1918 |
Pyramid 1.2 | 1650 |
Sinatra 1.2.6 | 1329 |
Django 1.3.1 | 1005 |
CodeIgniter 2.0.3 | 884 |
Kohana 3.2.0 | 675 |
TG 2.1.2 | 663 |
Rails 3.1 | 625 |
Yii 1.1.8 | 548 |
CakePHP 1.3.11 | 203 |
Symfony 2.0.1 | 171 |
:[9AB8F.N+W L0
“Hello World”数据库查询+模版测试Framework | Reqs/sec |
---|
Bottle 0.9.6 | 1562 |
Flask 0.7.2 | 1191 |
Sinatra 1.2.6 | 982 |
web.go (Go r59) | 741 |
Pyramid 1.2 | 555 |
CodeIgniter 2.0.3 | 542 |
Django 1.3.1 | 465 |
Rails 3.1 | 463 |
Kohana 3.2.0 | 423 |
TG 2.1.2 | 298 |
收藏
举报
TAG: