読者です 読者をやめる 読者になる 読者になる

何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

NuitkaでPythonを高速化する

Python

追記(2014年1月13日)
使い方を勘違いしていたので書き直しました。
追記(2014年1月14日)
もっと人が釣れそうなタイトルにしました。

NuitkaとはPythonコンパイラである(と作者は述べている)。タイトルは「Nuitka is a Python compiler.」の直訳。とりあえず英語が読める人はNuitkaのユーザーマニュアルを読んでわかりやすい解説記事を書いて欲しい。今回はNuitkaの使い方を簡単に紹介する。

必要なもの

OS: Linux, FreeBSD, NetBSD, MacOS X, and Windows (32/64 bits)

私の環境はWindows Vista(32bit)である。

アーキテクチャ: x86, x86_64 (amd64), and arm.

私の環境はx86である。

C++03をサポートした C++コンパイラ

が対応しているとのこと。今回はMinGWを用いた。

Python: Version 2.6, 2.7 or 3.2, 3.3

orとは書いてあるがPython3.3しかインストールしていない状態で実行するとPython2.7も要求されてしまった。両方入れたところ動作した。

Nuitkaのインストール

Downloads | Nuitka Homeからインストールするか

$ pip install nuitka

と唱える。
Python周りのPATHを通していれば

$ nuitka --help

と唱えるとヘルプが表示されるはずである。

Nuitkaの実力を見る

LiB/test に存在するpystone.pyを用いてNuitkaの実力を測ってみる。なお

  • プロセッサ:Intel Core2 Du0 CPU U7500 1.06GHz
  • メモリ:2GB
  • OS: Windows Vista 32bit

である。

実行結果は

$ python pystone.py 1000000
Pystone(1.1) time for 1000000 passes = 63.5001
This machine benchmarks at 15748 pystones/second

$ nuitka --mingw pystone.py
$ pystone.exe 100000
Pystone(1.1) time for 1000000 passes = 30.4349
This machine benchmarks at 32857 pystones/second

となり、大体2倍早くなったことがわかる。

実行形式の配布

$ nuitka --mingw --standalone pystone.py

とすればPythonに依存しない実行形式が得られるらしいが計算機が貧弱で試すことが出来ない。