GFD Dennou Club / Dennou Ruby / Tips

高速化

rubyの短所として実行が遅いことがあげられる。 しかし工夫すればこのデメリットを最小限におさえることができる。 つまり時間のかかるところを何とかすればよい。
rubyのループは非常に遅いためこの部分をCやFortranでかかれた 拡張ライブラリに置き換えればよい。 その他の部分はおそらく高々数回しか実行されないので、 遅くてもあまり問題ない(はず)。


NArrayを最大限利用する

データを扱う際 NArray を使いましょう。 NArray は C で書かれており高速に実行されます。 また役に立つメソッドが多数用意されているので簡単にプログラムが書けます。 NArray の機能うまく利用してできるだけ ruby のループをなくしましょう。

高速化心得その壱: 簡単な統計量は専用メソッドを使え

統計量を求めるために以下のようなメソッドが用意されている

その他
NArray#mul_add: x.mul_add(y,dim) は (x*y).sum(dim) と同じ結果を返すがより高速である
たとえば、共分散を求める際は

などとすればよい(x,yの平均が0とする)。

と実行時間を比較してほしい。

高速化心得その弐: 平均値からのずれもこんなに簡単に

平均量からのずれを計算する際、ほとんどの場合 ruby のループは必要ない。 以下のように書こう
xが1次元だといたってシンプルである。

多次元でも問題ない。
xが2次元だと






return