2012年1月22日

[tDiary-users-talk: 0510] Re: [patch] change to load 'rexml' lazilyfor performance

桑田です。

2012/1/16 TADA Tadashi <t@xxxxx>:
> メソッド内でのrequireはそのメソッドが呼ばれる(つまりamazon
> プラグインが実際に利用される)まで実行されないのだから、require
> をメソッド内に移動すれば目的は達成できるように思えます。
> unless...の部分は不要では? もちろん同じrequireを何度も呼ぶコス
> トはありますが。


一般的には、require 'xxxx' よりも require 'xxxx' unless defined?(...) のほうが高速です。
理由は、たぶんですが require がメソッドなのに対して defined? は演算子だから。
特に rubygems のように rquire を上書きした状態では、require が組み込みのものでは
なくなるため、遅くなります。

とはいっても、マイクロベンチマーク上では require '...' unless defined?(...) のほうが
ずいぶん高速なんですが、それがアプリケーションの速度にまで影響するのはまれなので、
unless defined? なしでもいいと思います。
unless defined? をつけたのは、たとえば hash['key'] より hash[:key] のほうが速いよねーとか、
str.length == 0 より str.empty? のほうが速いよねーといった程度のものであり、個人的な習慣です。

--
makoto kuwata

_______________________________________________
tDiary-users-talk mailing list
tDiary-users-talk@xxxxx
http://lists.sourceforge.jp/mailman/listinfo/tdiary-users-talk


投稿者 xml-rpc : 2012年1月22日 10:05
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/108293
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。