Mathtodon#cython

twitter.com/genkuroki/status/8
の私の発言の引用

誤解していたことなので繰り返しておきます。

fib_seq_cython_type(30)実行の律速段階は最初の数十nsにある感じです。(まだよく理解していない。) それを除けばCythonはとても速いです。ごめんなさい。】

律速段階がどこら辺にあるかわかったことは収穫。

gist.github.com/genkuroki/a182

「整数」で100番目のフィボナッチ数を計算したりすると簡単に「オーバーフロー」してしまうんですね。

だから、20番目とか30番目のようなおそろしく短時間で計算できるところでテストしていたのか。

フィボナッチ数でスピードテストするのはやめた方がいい感じ。

余談。

JuliaにはPyCallパッケージというのがあって、Pythonワールドに蓄積された膨大な量のライブラリをJuliaから気楽に利用できるようになっています。その機能は極めて有用です。

Juliaが2012年2月に公開された直後の4月に「JuliaからPythonを利用できるようにするべきだ」と提案したのは、Cython開発者の一人です。

Cython開発者によるその提案はJuliaの側にとって極めて有効だったと思います。

groups.google.com/forum/#!topi

P.S. Juliaからは、Pythonが気軽に呼べるだけではなく、Cも呼べるし、RやRubyも呼べます。

我々のmathtodonにおける経験で判明したことは、 gcc でJuliaに速度面で勝つためには相当に非自明なコードを書かなければいけないということ。

そして、Cythonの速さは実質的に C の速さです。

非自明なコードを C で直接書かずに、Cython で単純なコードをコンパイルして使っても、Juliaに速度面で勝てないのは予想通りの結果でした。

ところで、

Julia側からPythonのライブラリを使うのは易しいです。ほとんどPythonの存在を意識せずに使えるくらい簡単。

Python側からJuliaを気軽に呼び出して使える機能はすでに実装されているのでしょうか?

ちょっと検索しても見つからない。キーワードがわからない。

しかし、Cythonは速かったです!

再帰呼び出し版のフィボナッチ数の計算ではJuliaよりも2割ほど速かったです!

速度重視の場面では再帰呼び出しのコードは書かないのですが、それでもこういうことが分かったのは収穫だったと思っています。

Pythonでforループをどうしても大量に回さなければいけない場合にはCythonを使った方がよさそうです。

でも、PythonのコードがそのままCythonで走るわけではないので、要求されるプログラミングスキルは結構上がるような気がしました。

私のようにプログラミング・スキルが低レベルのユーザーであっても、素早く計算してくれる Julia の存在はやはりありがたいです。