じゃあ、おうちで学べる

本能を呼び覚ますこのコードに、君は抗えるか

恐縮ですが Cython を始める。(2)

There should be one-- and preferably only one --obvious way to do it.

The Zen of Python

はじめに

今回は純粋なpythonのコードとcythonでみんなが大好きなフィボナッチ数列を 明示的な再帰的問い合わせをして実装した場合に どれだけ性能差が出るのかipythonの機能を使って適当に図ってみたいと思います。

純粋なpython

gist.github.com

ipython上で%time %run pure_python.pyで実行時間が図れます。

結果

CPU times: user 31.7 s, sys: 0 ns, total: 31.7 s Wall time: 31.7 s

cython

Cythonでは、cdefキーワードを使った構文でC形式の関数を宣言できるようにしています。 かんたんだネ gist.github.com

%time import fib_c呼びだされると同時に実行されるのでちょっと微妙なんですが一応これで許して。

結果

CPU times: user 6.1 s, sys: 8 ms, total: 6.11 s Wall time: 6.1 s

今回は実証が微妙でしたが5倍は早くなりました。 チュートリアルでは150倍早くなったという声も聞くので皆さん色々試してください。

参照

Cython ドキュメント(和訳) — Cython 0.17.1 documentation

前のブログ syu-m-5151.hatenablog.com