性能测试:Pypy vs CPython
使用 nginx 反向代理,用 fastcgi 跑 django
Python libraries known to work under PyPy (the list is not exhaustive):
ctypes
django (without any DB but sqlite)
twisted (without ssl support)
pylons
divmod's nevow
pyglet
测试环境
OS: Mac
主机: 2.4GHz Intel Core 2 Duo
内存:4GB 1067 MHz DDR3
虚拟机:
内存:512 MB
nginx version: nginx/0.7.65
flup-1.0.1
Python 2.7.1 (b590cf6de419, Apr 30 2011, 02:00:38)
[PyPy 1.5.0-alpha0 with GCC 4.4.3]framework: Django-1.3
django views:
因为很多库不兼容,所以只测试简单的算法。
import hashlib
import random
from django.http import HttpResponsedef index(request):
# generate 100 stringns with 100 random characters
string_list = {}for string_index in xrange(100):
string_list[string_index] = ""
for index in xrange(100):
char = chr(random.randint(97, 97+25))
string_list[string_index] += charhtml = ""
for _string in string_list.values():
html += "%s
" % hashlib.md5(_string).hexdigest()
return HttpResponse("""%s""" % html)
测试命令:
/home/waylybaye/pypy/bin/pypy manage.py runfcgi method=threaded host=127.0.0.1 port=3033
python manage.py runfcgi method=threaded host=127.0.0.1 port=3033
ab -n 1000 -c 200
测试结果
并发数 | CPython | pypy |
---|---|---|
200 |
51.41 reqs/s 3890 ms/req |
79.71 reqs/s 2509 ms/req |
400 |
43.67 reqs/s 9159 ms/req |
89.03 reqs/s 4492 ms/req |
600 |
30.63 reqs/s 19589 ms/req |
74.09 reqs/s 8097 ms/req |
pypy 性能明显的好于 python ,不过很多不兼容的库是一大软肋。 因为mysql-python 不兼容所以没法测试读取数据库 的性能 (可以用sqlite)
另外测试中pypy 不太稳定,测试过程中突然就死了几次。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。