ささだです。

Hisashi Yahata wrote:
>  機能毎にまとめたsubであっても、その中の変数のほとんどがグローバル変数扱い
> となる場合に、引数が多くなります。データの引き渡しをdef毎(Perlのsub毎)
> に行うのと、グローバル変数として保持するのは、「演算速度」と「メンテ(および
> 発展)の容易さ」のバランスの問題と思いますが、どちらが効率的なのか、Rubyに詳
> しい諸先輩は、これをどのようにされているのかお聞かせいただけると嬉しいです。
> 具体例がなければ議論は無理かもしれませんが。

 私の考えで恐縮ですが、おそらく「メンテ(および発展)の容易さ」を優先
されたほうがいいのでは無いかと思います。

 もちろん、「演算速度」への要求が一番高い場合はなんらかの最適化手法を
とる必要がありますが、そのときにも「メソッド呼び出しをなるべくしない」
というような最適化ではなく、もっと他の方法(リファクタリングして冗長な
部分を削る、アルゴリズムを改良する、C 言語などで拡張ライブラリを書く、
新しいマシンを買う、Ruby を諦める、YARV を待つ)を利用するほうが良いか
と思います。

 そのようなときには、おそらく「メンテしやすい」プログラムであったほう
が、後々にも最適化などしやすいのではないかと思います。

 あと、一般的に、処理速度を気にしないことが多いような気がします。とり
あえず見通しのいいものを作っておいて、必要に応じて最適化していけばいい
んじゃないでしょうか。


----
# ホットスポットでは効きますけどねえ。メソッド呼び出し削るの。