1
phuslu 2012 年 10 月 18 日
gevent.sleep(0) 似乎不是必须的.
http://gist.github.com/3910331 |
2
phuslu 2012 年 10 月 18 日
还有, python 2.6 比较老, 可能测试 python 2.7 更有说服力.
|
3
lookhi 2012 年 10 月 18 日
再加个tornado的吧
|
5
phuslu 2012 年 10 月 18 日
看了一下 twisted 代码, 使用的 buffer size 是 65536, 大概是这点比较占便宜.
建议楼主把 golang/gevent 的 buffer size 也改成 65536 试下. |
9
phuslu 2012 年 10 月 18 日
@myrual 理论上说 python27+gevent 不会比 python27+twisted 更慢. nodejs 0.8.x 在这类 benchmark 中应该最占便宜.
|
10
myrual OP python gevent 把recv的数量改大没有变化。
|
12
myrual OP 明天到公司试试。顺便尝试一下python27 + gevent 的效果
|
14
phuslu 2012 年 10 月 19 日
@myrual 嗯, 谢谢. 这个结果差不多是 python 的极限了.
之前也看过一些 web 或 tcp 方面 benchmark, gevent 基本是 python 目前唯一拿得出手的比较完备的框架. (单测 web 框架的话, bjoern/meinheld 都会比 gevent 快很多, 可惜不够完备) tornado 的话, 基本比 gevent 慢 30% 以上, 吃亏在它的 IOStream 的 buffer 是用 collection.deque 实现, 尽管已经高度优化, 但是还是比不上 gevent 集成的 libev/libevent. 纯 IO 的测试(不涉及后端), gevent 勉强可以达到 golang/nodejs 同一个数量级, 但是如果加上一些简单的计算, 差不多慢2~3倍. 如果计算量比较大或者设计后端操作, 那就更慢了. nodejs/golang 目前做这类 benchmark 性能最好, 而且 golang 在不断发展中, 很期待~ |