某測試模擬器性能優化-使用PyPy提升Python程序性能

PyPy簡單介紹

PyPy is a fast, compliant alternative implementation of the Python language (2.7.13 and 3.5.3). It has several advantages and distinct features:

  • Speed: thanks to its Just-in-Time compiler, Python programs often run faster on PyPy. (What is a JIT compiler?)
  • 「If you want your code to run faster, you should probably just use PyPy.」 — Guido van Rossum (creator of Python)
  • Memory usage: memory-hungry Python programs (several hundreds of MBs or more) might end up taking less space than they do in CPython.
  • Compatibility: PyPy is highly compatible with existing python code. It supports cffi and can run popular python libraries like twisted and django.
  • Stackless: PyPy comes by default with support for stackless mode, providing micro-threads for massive concurrency.

從PyPy官方的介紹中可以看出它是Python語言的替代實現,比CPython更快,因為它是基於JIT技術的,並且使用更少的內存,同時還幾乎提供了所有的內置模塊。

既然這麼好,那我們自然會想到用PyPy來對重構過的代碼再做一次性能提升的嘗試。

安裝PyPy

PyPy可以直接從官網上下載 pypy.org/download.html

提升性能,肯定要使用JIT版本,同時為了避免某些動態庫無法找到的問題,推薦大家使用類似於pypy-5.10.0-linux_x86_64-portable.tar.bz2這樣的portable版本,直接解壓就可以使用。

PyPy貼心地內置了VirtualEnv工具,你可以用它直接生成專用的PyPy工作環境。

然後,你可能需要先使用CPython的pip命令導出項目pip安裝的包到requirements.txt

pip freeze > requirements.txtn

然後到PyPy工作環境的bin目錄下,使用requirements.txt為PyPy安裝pip包

./pip install -r requirements.txtn

執行你的程序

使用PyPy執行你的程序吧

./pypy log_generator.pyn

資料上說,對於計算密集型的程序,PyPy一般能夠將性能提升一個數量級。而我們的測試模擬器,其實是IO密集型的程序,實測下來,性能大致提升了2倍以上。

總結

看到這裡,相信您已經了解如何使用PyPy提升Python程序性能了。

當然,我們的模擬器也順利地能夠支持模擬100w節點在線了~

如果覺得本文對您有幫助,敬請點贊。

推薦閱讀:

TAG:Python | 自动化测试 | 软件测试 |