UTALI

みんなの役に立つ情報をどんどん公開していきます

PythonとC言語のディガンマ関数について

scipyに組み込まれていたdigamma()が遅いので調べました。

改善案:C言語のライブラリを利用する。

http://www2.mpia-hd.mpg.de/~mathar/progs/digamma.c

これをCythonでラッピングして計測

>>>import cython
>>> timeit.timeit('cython.digamma(2)',number=1000000,globals=globals())

0.20289229199988768

一方Scipy版は

>>> from scipy.special import digamma
 

>>> timeit.timeit('digamma(2)',number=1000000,globals=globals())
1.1982967060175724

約6倍の高速化でした。