47个web框架效能比较 - V2EX
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 &bsp;  Velocity

47个web框架效能比较

  •  
  •   dcoder 2013-05-04 02:44:13 +08:00 10441 次点击
    这是一个创建于 4610 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    &nbp;   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
    PRO
       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     Solana     1096 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 18:07 PVG 02:07 LAX 10:07 JFK 13:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86