某測試模擬器性能優化-使用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可以直接從官網上下載 http://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節點在線了~
如果覺得本文對您有幫助,敬請點贊。
推薦閱讀: