2012年04月22日

Interactive Extensions(Ix) - Memoizeメソッド

   このエントリーをはてなブックマークに追加 Clip to Evernote
EnumerableEx.Memoize拡張メソッドは、シーケンスをメモ化してくれます。
このメソッドの戻り値を使い、複数回呼び出した場合は、キャッシュされた
値を返します。
同じシーケンスを複数回列挙する場合に、速度向上に威力を発揮します。

まずは、値がキャッシュされているかどうかが確かめられるように、
以下のような、シーケンスを生成するメソッドを定義します。


最初に、Memoizeを使わないコードだとどうなるかを見てみます。


これを実行した結果を以下に示します。


複数回、列挙されているのが分かります。
では、次に、Memoizeを使った例です。


以下、実行結果です。


注目してほしいのは、


ではないということです。つまり、Memoize()を呼びだしても
列挙はされません。遅延実行の原則がここでも生きています。



 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52236792