Web框架比拼测评
来源:互联网 发布:战地之王mac版 编辑:程序博客网 时间:2024/05/10 06:14
Web框架比拼测评
作者:Seth Davis
欢迎来到web框架比拼现场。你在这里可以看到现在最流行最常用的免费开源web框架的测试代码和基准测试性能对比结果。
Web框架为什么需要比拼?
众多Web框架的版本号飙升,已经成为了一到靓丽的风景线,我很想知道不同的框架以及不同版本间的性能差别。
从2009年9月起,我开始在博客上分多次发布一些测试结果。 第4次发布后,我觉得是时候合并统计所有的测试了(已更新),在此奉上。
“这些测评结果有价值么?”
可能没有价值。
涉及到编码,极小的改动调整也会带来极大的变化。我曾试着公平准确地执行每次测试,但以任何学术态度对待结果都将是愚蠢的。另外,需要指出,我的目标并不是要找到每个框架最优配置后到底多快(如果默认配置允许,内置缓存和其他性能调优通常已开启),而是想看看一个最小化“开箱即用”的体验。
此外,没有一种web技术会看起来比另一种好。当涉及到使用工具进行工作时,“快”并不一定意味着“更好”。(极少数的真实项目才需要依赖单页的请求速度)
测评索引
- Full-stack式:Pyramid, Django, TurboGears,Rails
- 微框架:Bottle, Flask, Sinatra,Go
- PHP框架:CakePHP, Kohana, CodeIgniter, Symfony, Yii
- 所有框架横向测试
- 测试环境配置信息以及测试源代码
每个框架都运行3个基本测试。以下是每个测试由高到低的每秒请求数的结果(越高越好)
Full-stack式:Pyramid, Django, TurboGears,Rails
注:Pyramid/Django使用SQLAlchemy作为ORM,使用Jinja2作为模版引擎
微框架:Bottle, Flask, Sinatra,Go
注:Web.go 在自带服务器中进行测试。另外,我对C语言非常生疏,只是随便了解了一下Go, 所以web.go没有进行数据库测试。(如果有人可以给Web.go添加一个SQLite的测试,我将非常感激。)
PHP框架:CakePHP, Kohana, CodeIgniter, Symfony, Yii
注:
- 没错,APC缓存已开启(参见测试配置)
- 众所周知,很多PHP框架与SQLite3兼容不是很好,为了让测试跑起来,做了一些必要的hack
所有框架横向测试
因为框架之间的差异,其实横向比较框架的测试并不是很“公平”。编译语言(比如Go)会比动态语言快。使用了ORM的(比如 Rails, Django,Pyramid等) 会比使用了普通DB库的(比如Bottle,Flask,Sinatra等)要慢。
“hello World”字符串测试
“hello World”模版测试
“Hello World”数据库查询+模版测试
测试环境配置信息以及测试源代码
所有测试均在Amazon EC2进行,配置如下:
- EC2实例:ami-fbbf7892 m1.large ubuntu-images-us/ubuntu-lucid-10.04-amd64-server- 20110719.manifest.xml
- Amazon的主机简介:7.5GB内存, 4个EC2 计算单元,850G空间,64位平台
- Apache 2.2.14(我知道还有其他选择,考虑到Apache的市场占有率,我觉得它是一个不错的基线)
- 基于Python的测试:Python 2.6.5 + mod_wsgi 2.8 (内嵌模式)
- 基于Ruby的测试:Ruby 1.9.2p290 + Phusion Passenger 3.0.9
- 基于PHP的测试:PHP 5.3.2 (开启APC缓存)
关于每个框架的三种测试:
- “hello World”字符串测试:本测试只是简单的字符串输出,没有模版或数据库调用,所以应该是最低级别的测试。
- “hello World" 模版测试:本测试通过模版输出Lorem Ipsum(一篇拉丁文文章)(以此可以测试框架的模版引擎)
- "Hello World"数据库查询 + 模版测试:本测试从SQLITE数据库中读取5行拉丁文(通过默认ORM或者sqlite3驱动),然后通过模版输出。(以此可以测试框架的ORM/DB驱动,还有模版引擎)
以后的更新
关于测评的重要声明和其他详细信息,请参见:The Great Web Framework Shootout's website。如果你有任何疑问或评论,请在google+上联系我。
原文参见:http://blog.curiasolutions.com/the-great-web-framework-shootout/
- Web框架比拼测评
- 6种Web框架测评
- 6种Web框架测评
- WEB服务器大比拼
- WEB服务器大比拼
- 六大Web浏览器比拼
- WEB服务器大比拼
- Web浏览器大比拼
- 流行AJAX框架大比拼
- 流行AJAX框架大比拼
- 常见JS框架大比拼
- .Net开源微型ORM框架测评
- Office Web Apps 非专业测评
- 流行AJAX框架大比拼(一)
- 流行AJAX框架大比拼(二)
- (转)JavaScript框架性能大比拼
- Autofac(IOC框架)速度比拼
- 流行移动平台自动化框架逐项比拼
- MAC系统下配置环境变量
- Android Bluetooth 移植(下)
- 【问题】拍摄的视频无编码信息
- .NET环境下创建Activex
- httpclient4 超时时间
- Web框架比拼测评
- linux下安装软件的办法(.rpm .src .tar.gz .bin)(转)
- 基于Android 的GPS 移植 主要结构体及接口介绍
- 杂记
- 【Android Training - Performance】优化电池续航能力[Lesson 2 - 判断设备的停驻模式与类型]
- 基于Android 的GPS 移植 Android内部调用方式
- 人脉---有的地方讲的挺有道理,跟自己想也相符
- mx51的三个framebuffer,bg, tvout, fg(ovlery)
- python 中不能空格和tab不能同时用