性能测试:Pypy vs CPython

看到pypy 1.5 已经发布很久了,而且兼容django,于是打算做个简单点的性能测试。

使用 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 HttpResponse

def 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] += char

    html = ""
    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 不太稳定,测试过程中突然就死了几次。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。