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

2020-04-17_rpython标题.png

性急的请直接看文末。html

环境搭建

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

今后下载例程:Andrew Brown 的 pypy 入门git

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

两种运行 rpython 的方法:性能

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

方法1 也许由于版本更新,翻译过程当中警告信息少了些。spa

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

性能比较

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

2020-04-17_rpython以前.png

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

$ time ./ex2 mandel.b

效果以下,只用了 48 秒:htm

2020-04-17_rpython以后.png

若是只运行到以前那个位置,只需 6 秒不到:

2020-04-17_rpython部分.png

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

有点意思。

相关文章
相关标签/搜索