47个web框架效能比较

2013-05-04 02:44:13 +08:00
 dcoder
http://www.techempower.com/benchmarks/#section=data-r4

这里看起来Django和ROR都比较慢呢,求有经验的人解答
9663 次点击
所在节点    Velocity
15 条回复
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
2013-05-04 03:08:07 +08:00
看来node.js是动态语言框架里面的跑分王
lfhong
2013-05-04 03:26:39 +08:00
node.js跑分确实牛,我做过一个简单测试,杠杠的。
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
2013-05-04 04:37:18 +08:00
其实有很多没啥功能的库也号称框架。最看不惯的就是micro-framework的说法,你又不是麻雀,五脏都不全还号称framework
hooluupog
2013-05-04 09:18:01 +08:00
57个吧。。。
JackyHua
2013-05-04 09:45:22 +08:00
看好Nodejs
keakon
2013-05-04 10:59:15 +08:00
你们难道没看到 Lua 的 openresty 么…

另外,前几位的都是多线程的,Tornado 不多开几个进程么?
chilaoqi
2013-05-04 11:08:03 +08:00
go语言很 imbalance的样子
wuxqing
2013-05-04 22:02:33 +08:00
Django和ROR这些框架做的事情多,自然就慢了
我觉得还应该把bjoern, meinheld也放进去对比下
我测试bjoern, meinheld,还是很快的
http://www.360ito.com/article/26.html
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
2013-05-05 21:19:14 +08:00
我去,好复杂的测试,什么都有

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

求完整中文翻译啊
Livid
2014-06-07 15:29:55 +08:00
这个测试至少可以让你知道,一个开发框架在进行一些最基本的事情的时候的 overhead。每一个基础操作的的 overhead 在大型项目中积累下来可能就是不小的性能损失。
canesten
2014-06-07 15:42:48 +08:00
techempower著名月经贴
只关注textplain的性能
也就这个对比比较纯粹
其他夹杂数据库访问和JSON序列化的基准测试完全没有可比性
用的数据库驱动和JSON序列化的库都不一样
所以这一部分的开销也完全不一样
造成了大量的偏差
所以根本无法从直观意义上看出一个框架的速度
lang1pal
2014-06-07 20:34:46 +08:00
在机器性能越来越优异的这种其实真的不重要了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/67647

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX