LINQと遅延評価

[雑記] LINQ と遅延評価 (C# によるプログラミング入門)
http://ufcpp.net/study/csharp/sp3_lazylist.html
概要、LINQの動作概要、リスト→リスト、遅延評価


イテレータを使って、lazy listのようなことができる


クエリ式はWhere, Fromなどのメソッド呼び出しに変換される。
その引数には、ラムダ式つまり簡素化した匿名メソッドが与えられる。


Where, SelectはIEnumerableなリストからIEnumerableなリストを得るメソッド。
そこで、IListでも同様にWhere, Selectを実装してみると、リストからリストを得る部分が実行時間の大半を占めるようになる。
foreachの処理はほんの少し。
これではまずい事もある。
負荷分散するために、必要な要素にだけ必要な処理をするようにする。これを遅延評価(delayed/lazy evaluation)という。


参考 キャッシュ機構をもつ遅延評価


MVP-Submitted: Lazy Computation in C#
http://msdn.microsoft.com/ja-jp/vcsharp/bb870976(en-us).aspx