动漫驿站

Django 用户。新闻传播学毕业,后投笔从IT,常用ID是Perchouli,现在北京工作,于Web产品的道路上匀速蠕 ...

↑我也要推荐

性能测试:Pypy vs CPython

发布时间:2011-06-12 22:35:48, 关注:+10174, 赞美:+10, 不爽:+8

本文标签: pypy django nginx fastcgi

原始出处: waylybaye 's road

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

如果你觉得本站对你有帮助,欢迎向本站赞助 :P

使用支付宝捐赠

Copyright© Python4cn(news, jobs) simple-is-better.com, 技术驱动:powered by web.py 空间主机:Webfaction

版权申明:文章转载已注明出处,如有疑问请来信咨询。本站为 python 语言推广公益网站,与 python 官方没有任何关系。

联系/投搞/留言: en.simple.is.better@gmail.com 向本站捐赠