1
pyKun 2014 年 9 月 23 日
楼主测的什么case?
|
2
geew OP 照着网上的例子随意跑的,开始没觉得差距这么大
例子: https://gist.github.com/anonymous/31c99d0ce30080a158f2 结果: :~$ python t.py total run time: 14.747013092 :~$ pypy t.py total run time: 1.07921886444 |
3
awanabe 2014 年 9 月 23 日
这个也就是pypy的JIT的作用了吧...
|
4
awanabe 2014 年 9 月 23 日
再加一句...重IO的就不太适用了...重计算的还是可以尝试的
|
6
eriale 2014 年 9 月 23 日
重IO的瓶颈不在计算上,Livid换过,瓶颈不在python解释器,而是mysql
|
8
CMGS 2014 年 9 月 23 日
CPU bound的有效,IO bound的……少侠还是 tornado + pypy吧……
|
10
mengzhuo 2014 年 9 月 23 日
pypy请看看内存用量
3倍 |
12
CMGS 2014 年 9 月 23 日
|
13
awanabe 2014 年 9 月 23 日 @geew 只是举个例子, 描述下大致运作的规则.
你的例子中, 重复1000000次, JIT处理的时候, 就会缓存这段代码. 节省了字节流->机器码的转换. 类似于这样的, 对于计算, 细粒度的比如 1+1之类, 可以缓存结果. 那就省了很多CPU, 所以快在这里面. 对于web服务器, 很多是对于DB, 缓存读取. 遇到这样的IO请求, 就会阻塞. 这个时候只能等待. 可以看下 @CMGS 提供的 tornado + pypy, 虽然tornado主打异步, 不过tornado的mysql也是阻塞的, 如果用到mysql, 瓶颈还在mysql. 以上差不多, 就是解释下 "重IO的就不太适用了...重计算的还是可以尝试的" |
16
nooper 2014 年 9 月 28 日
cython 需要内存管理和gil 机制。
|