numpyを使って、行列に対するtwosum, twoproductを高速化する
柏木先生の考案された改良型twosum, twoproductを行列に適用し、それをnumpy流にベクトル化し、高速化した。
コードと結果は以下
github.com
github.com
環境は
- Mac Book Pro 2012 mid (ただし、メモリを16GBに増やしている)
- anaconda 4.0.8 (以下anaconda内のパッケージ)
* python 3.5.1 * scipy 0.17.0 np110py35_4 * numpy 1.10.4 py35_2 * mkl 11.3.3
結果は
%timeit twosum(a, b)
10 loops, best of 3: 80.7 ms per loop
%timeit twosum_old(a, b)
1 loop, best of 3: 2 s per loop
%timeit twoproduct(a, b)
10 loops, best of 3: 76.8 ms per loop
%timeit twoproduct_old(a, b)
1 loop, best of 3: 4.22 s per loop
特に特殊な手法は用いていないが、ベクトル化するだけで大幅に高速化した。