There should be one-- and preferably only one --obvious way to do it.
はじめに
今回は純粋なpythonのコードとcythonでみんなが大好きなフィボナッチ数列を 明示的な再帰的問い合わせをして実装した場合に どれだけ性能差が出るのかipythonの機能を使って適当に図ってみたいと思います。
純粋なpython
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倍早くなったという声も聞くので皆さん色々試してください。