質問: 少々変な質問をさせていただきます. アドバイスを主に伺いたいです. --------------- プログラムの高速化をしたく,Rubyの標準ライブラリ`Array`から`Numo::NArray`に実装変更したいのですが,私の現在のRubyのプログラムが大規模でありまして,例えば,`aaa.rb`内で`Array`で定義した配列で様々な四則演算を行い,その結果を`bbb.rb`内のメソッドでまた四則演算を行ったりと複雑なプログラムです. そういったプログラムに対して一部の`Array`を`Numo::NArray`にそのまま実装変更したら大量のエラーが発生しそうで怖いです. 一部の`Array`を`Numo::NArray`にそのまま実装変更しても問題はないのでしょうか. `Array`と`Numo::NArray`は互換性はありますでしょうか. かなり抽象的な質問であり,私がどのようなコードを書いているかにも依存する質問ですが,質問から汲み取れる範囲で良いのでご教授お願いします.
回答: Ruby/NArrayのファンです。 NArrayに興味を持ってくれる人がいてとても嬉しいのです。 高速計算をしたいのですね。NArrayにはうってつけの課題ではないでしょうか。 ただNArrayがRubyのArrayとは全然違うのも事実なので、ちょっとずつ変更していく必要があるでしょう。 ``` # Rubyの配列 → NArray na = Numo::DFloat.cast(array) # NArray → Rubyの配列 ruby_array = na.to_a ``` と書けば相互変換できますので、少しずつ置き換えていきましょう。 個人的な経験では、Rubyの配列とNArrayの相互変換はそれほど時間がかからず、 計算の高速化の効果の方が高いです。 numo-linalg numo-gsl numo-fftw numo-ffte などの便利なライブラリもありますよ。 NArrayの全く初心者の方は以下のQiitaエントリーを一読してみてください。 わからないことがあったらぜひGitHubのNArrayのissueに書き込んだり、 日本語がいいならSciRubyのSlackで質問することもできます。 よろしくおねがいします。