neuecc さんの ToArray vs ToList を受けてちょっと書いてみます。 というのも、 .NET Framework にはパフォーマンス上ある一点に断崖絶壁があり、この断崖絶壁を何の気なしに超えてしまうと一気にパフォーマンスが落ちます。この断崖絶壁すなわちオブジェクトのサイズによる CLR のヒューリスティックが発動される時です。 例えばこのヒューリスティックはオブジェクトのサイズが 24KB を超える点で発動します。 CLR2 ではこのヒューリスティックは LOH へのオブジェクトの配置、CLR4では Gen1 に確保する様になっているようです。 このヒューリスティックの発動は性能面ではっきりした影響を表す事に注意してください、最も単純な例でも 20% ~ 30% の性能影響がでます。 (参考: .NET CLR2 と CLR4 の StringBuilder のパフォー
![ToList / ToArray の性能 – GC 特性とCLRメモリヒューリスティックス](https://cdn-ak-scissors.b.st-hatena.com/image/square/e3a661d3e51400597b0a15ac1a57ac02fe85a601/height=288;version=1;width=512/https%3A%2F%2Fkazuktnd.wordpress.com%2Fwp-content%2Fuploads%2F2011%2F08%2Fimage_thumb.png)