V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Velocity Beijing 2015
O'Reilly Velocity
Web Performance and Operations
http://velocityconf.com/
YSlow
Best Practices for Speeding Up Your Web Site
dcoder
V2EX  ›  Velocity

47个web框架效能比较

  •  
  •   dcoder · 2013-05-04 02:44:13 +08:00 · 9848 次点击
    这是一个创建于 4226 天前的主题,其中的信息可能已经有所发展或是发生改变。
    http://www.techempower.com/benchmarks/#section=data-r4

    这里看起来Django和ROR都比较慢呢,求有经验的人解答
    15 条回复    2014-06-07 20:34:46 +08:00
    yyfearth
        1
    yyfearth  
       2013-05-04 03:02:24 +08:00
    我觉得主要2个原因,一个是语言,一个是重量
    相同语言Django比Bottle Flask慢,Rails比Sinatra慢,是因为Django和Rails是full web stack,比较重,而Bottle Flask Sinatra 是lightweight framework比较轻。
    另外不同语言,一般都是编译或者JIT的语言比脚本语言快,尤其是这种跑分的时候尤其明显。大家都知道Ruby很慢,Python也不快(相比Java)。
    除此之外我觉得NIO非阻塞也会有比较大的影响,只是我不知道这个测试里面有没有包括进来。一般来说非阻塞的吞吐量会大很多。
    dcoder
        2
    dcoder  
    OP
       2013-05-04 03:08:07 +08:00
    看来node.js是动态语言框架里面的跑分王
    lfhong
        3
    lfhong  
       2013-05-04 03:26:39 +08:00
    node.js跑分确实牛,我做过一个简单测试,杠杠的。
    lfhong
        4
    lfhong  
       2013-05-04 04:25:35 +08:00
    看看ORM对性能的影响:
    Framework RAW FULL ORM
    -------------------------------------------------------------------------------------
    PHP 29.7% 5.9%
    -------------------------------------------------------------------------------------
    bottle 30.9% 12.2%
    -------------------------------------------------------------------------------------
    nodejs 46.9% 33.2%
    -------------------------------------------------------------------------------------
    flask 19.2% 9.8%
    metaclass
        5
    metaclass  
       2013-05-04 04:37:18 +08:00
    其实有很多没啥功能的库也号称框架。最看不惯的就是micro-framework的说法,你又不是麻雀,五脏都不全还号称framework
    hooluupog
        6
    hooluupog  
       2013-05-04 09:18:01 +08:00
    57个吧。。。
    JackyHua
        7
    JackyHua  
       2013-05-04 09:45:22 +08:00
    看好Nodejs
    keakon
        8
    keakon  
       2013-05-04 10:59:15 +08:00
    你们难道没看到 Lua 的 openresty 么…

    另外,前几位的都是多线程的,Tornado 不多开几个进程么?
    chilaoqi
        9
    chilaoqi  
       2013-05-04 11:08:03 +08:00
    go语言很 imbalance的样子
    wuxqing
        10
    wuxqing  
       2013-05-04 22:02:33 +08:00
    Django和ROR这些框架做的事情多,自然就慢了
    我觉得还应该把bjoern, meinheld也放进去对比下
    我测试bjoern, meinheld,还是很快的
    http://www.360ito.com/article/26.html
    nkliwenjian
        11
    nkliwenjian  
       2013-05-04 23:19:03 +08:00
    看了一下场景的设计。这样的设计其实远远的脱离了实际的使用,所以产生的结果就很让人怀疑了。真实应用最常见的场景应该是有很多的跨表查询在里面的,而且关键业务的查询也不可能那么简单。在他的设计里面数据库消耗的时间基本上都是可以忽略不计了,单纯考虑架构的性能,当然得出这个结果了。但是实际应用中数据库消耗的时间是不能忽略的。

    举个例子。第一个图表,最高的go一秒钟能处理10000个请求,等于是0.1毫秒一个请求。然后flask只能处理100个请求,等于是10毫秒一个请求。所以是1:100,但是如果那个数据库请求耗时增加到2毫秒的话,比例就是2.1:12了,如果增加到3毫秒的话就是3.1:13了。他的报表说白了也没错,只是说在现实中的差距远没有那么夸张就是了。

    我觉得要测试的话至少要设计出类似电商网站的例子来,数据量要大到一定程度,然后至少两个场景。
    1. 若干个查询条件,处理然后进行数据库查询,返回一个列表。输出应该是html,当然json也无差。
    2. 查询某个商品,然后根据查询该商品相关的一系列表,然后返回结果。
    Feobe
        12
    Feobe  
       2013-05-05 21:19:14 +08:00
    我去,好复杂的测试,什么都有

    眼睛都看花了。。看不太懂,好多根本没见过的东西

    求完整中文翻译啊
    Livid
        13
    Livid  
    MOD
       2014-06-07 15:29:55 +08:00
    这个测试至少可以让你知道,一个开发框架在进行一些最基本的事情的时候的 overhead。每一个基础操作的的 overhead 在大型项目中积累下来可能就是不小的性能损失。
    canesten
        14
    canesten  
       2014-06-07 15:42:48 +08:00
    techempower著名月经贴
    只关注textplain的性能
    也就这个对比比较纯粹
    其他夹杂数据库访问和JSON序列化的基准测试完全没有可比性
    用的数据库驱动和JSON序列化的库都不一样
    所以这一部分的开销也完全不一样
    造成了大量的偏差
    所以根本无法从直观意义上看出一个框架的速度
    lang1pal
        15
    lang1pal  
       2014-06-07 20:34:46 +08:00 via iPhone
    在机器性能越来越优异的这种其实真的不重要了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1754 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:38 · PVG 00:38 · LAX 08:38 · JFK 11:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.