神奇的 RPython 初探:解释器性能四百倍提升

吴烜

2020-04-17_rpython标题.png

性急的请直接看文末。

环境搭建

为何木兰采用 RPly 而非 Ply?RPython 和 PyPy 才是真意?,忍不住想试试 RPython 的实测效果。于是找到此文档:Tutorial: Writing an Interpreter with PyPy, Part 1

从此下载例程:Andrew Brown 的 pypy 入门

首先在 Mac 下用了 condo 创建了 python 2.7 环境, rpython 需要(可惜,貌似就不能用中文命名标识符了)。

两种运行 rpython 的方法:

  1. 下载 pypy 源码,运行$ python 【pypy 解压路径】/rpython/bin/rpython xxx.py
  2. 下载DeloitteHux/cycy,运行pip install -e .,也许可以单独安装rpython?就可以运行$ rpython --output=ex2 xxx.py

方法1 也许因为版本更新,翻译过程中警告信息少了些。

注意下面将原本例程中的example2.py(BrainFxxk 的解释器)文件改名,前面加了 "target",但实际好像不需要 lol。

性能比较

在 python 2.7 环境中,直接运行这个解释器 ,生成一个分形图案。由于实在太慢,跑了 40 分钟强行中止。

2020-04-17_rpython之前.png

好戏开始,运行 rpython 后生成可执行文件,运行此可执行文件对原 BF 源码进行解释:

$ time ./ex2 mandel.b

效果如下,只用了 48 秒:

2020-04-17_rpython之后.png

如果只运行到之前那个位置,只需 6 秒不到:

2020-04-17_rpython部分.png

性能提升:40分钟/6秒=400 倍

有点意思。

阅读 477

烜 的读音: xuǎn

2 声望
0 粉丝
0 条评论
你知道吗?

烜 的读音: xuǎn

2 声望
0 粉丝
宣传栏