PyPy
和
CPython
的性能比较测试
最近我在维基百科上完成了一些数据挖掘方面的任务。
它由这些部分组成:解析
enwiki-pages-articles.xml
的维基百
科转储;把类别和页存储到
MongoDB
里面;对类别名称进
行重新分门别类。
我对
CPython 2.7.3
和
PyPy 2b
的实际任务
性能进行了测试。我使用的库是:
redis 2.7.2pymongo 2.4.2
此外
CPython
是由以下库支持的:
hiredispymongo
c-extensions
测试主要包含数据库解析,
所以我没预料到会从
PyPy
得到多大好处
(何况
CPython
的数据库驱动是
C
写的)
。
下面我会描述一些有趣的结果。
抽取维基页名
我需要在所有维基百科的类别中建立维基页名到
page.id
的
联接并存储重新分配好的它们。最简单的解决方案应该是导
入
enwiki-page.sql
(定义了一个
RDB
表)到
MySQL
里面,
然后传输数据、
进行重分配。
但我不想增加
MySQL
需求
(有
骨气!
XD
)所以我用纯
Python
写了一个简单的
SQL
插入语
句解析器,然后直接从
enwiki-page.sql
导入数据,进行重分
配。这个任务对
CPU
依赖更大,所以我再次看好
PyPy
。
/
timePyPy 169.00s
用户态
8.52s
系统态
90% CPUCPython
1287.13s
用户态
8.10s
系统态
96% CPU
我也给
page.id->
类别做了类似的联接(我笔记本的内存太小了,不能保存供