神奇的 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 倍

有點意思。

相關文章
相關標籤/搜索