V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
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 · May 4, 2013 · 10688 views
    This topic created in 4741 days ago, the information mentioned may be changed or developed.
    http://www.techempower.com/benchmarks/#section=data-r4

    这里看起来Django和ROR都比较慢呢,求有经验的人解答
    15 replies    2014-06-07 20:34:46 +08:00
    yyfearth
        1
    yyfearth  
       May 4, 2013
    我觉得主要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
       May 4, 2013
    看来node.js是动态语言框架里面的跑分王
    lfhong
        3
    lfhong  
       May 4, 2013
    node.js跑分确实牛,我做过一个简单测试,杠杠的。
    lfhong
        4
    lfhong  
       May 4, 2013
    看看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  
       May 4, 2013
    其实有很多没啥功能的库也号称框架。最看不惯的就是micro-framework的说法,你又不是麻雀,五脏都不全还号称framework
    hooluupog
        6
    hooluupog  
       May 4, 2013
    57个吧。。。
    JackyHua
        7
    JackyHua  
       May 4, 2013
    看好Nodejs
    keakon
        8
    keakon  
       May 4, 2013
    你们难道没看到 Lua 的 openresty 么…

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

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

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

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

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