1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

科技 2012:Web框架比拼测评

本帖由 漂亮的石头2012-03-23 发布。版面名称:新闻聚焦

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    486,020
    赞:
    46
    感谢瓷锤的投递
    Web框架为什么需要比拼?
    众多Web框架的版本号飙升,已经成为了一到靓丽的风景线,我很想知道不同的框架以及不同版本间的性能差别。从2009年9月起,我开始在博客上分多次发布一些测试结果。 第4次发布后,我觉得是时候合并统计所有的测试了(已更新),在此奉上。
    “这些测评结果有价值么?”
    可能没有价值。
    涉及到编码,极小的改动调整也会带来极大的变化。我曾试着公平准确地执行每次测试,但以任何学术态度对待结果都将是愚蠢的。另外,需要指出,我的目 标并不是要找到每个框架最优配置后到底多快(如果默认配置允许,内置缓存和其他性能调优通常已开启),而是想看看一个最小化“开箱即用”的体验。
    此外,没有一种web技术会看起来比另一种好。当涉及到使用工具进行工作时,“快”并不一定意味着“更好”。(极少数的真实项目才需要依赖单页的请求速度)
    测评索引
    每个框架都运行3个基本测试。以下是每个测试由高到低的每秒请求数的结果(越高越好)
    Full-stack式:Pyramid, Django, TurboGears,Rails
    注:Pyramid/Django使用SQLAlchemy作为ORM,使用Jinja2作为模版引擎
    [​IMG]
    [​IMG]
    [​IMG]
    微框架:Bottle, Flask, Sinatra,Go
    注:Web.go 在自带服务器中进行测试。另外,我对C语言非常生疏,只是随便了解了一下Go, 所以web.go没有进行数据库测试。(如果有人可以给Web.go添加一个SQLite的测试,我将非常感激。)
    [​IMG]
    [​IMG]
    [​IMG]
    PHP框架:CakePHP, Kohana, CodeIgniter, Symfony, Yii
    注:
    • 没错,APC缓存已开启(参见测试配置)
    • 众所周知,很多PHP框架与SQLite3兼容不是很好,为了让测试跑起来,做了一些必要的hack
    [​IMG]
    [​IMG]
    [​IMG]
    所有框架横向测试
    因为框架之间的差异,其实横向比较框架的测试并不是很“公平”。编译语言(比如Go)会比动态语言快。使用了ORM的(比如 Rails, Django,Pyramid等) 会比使用了普通DB库的(比如Bottle,Flask,Sinatra等)要慢。
    “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
    [​IMG]
    “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
    [​IMG]
    “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
     
正在加载...