Enumerable.Reverseについて
SingleLinkedListにIList
しかしfor文での速度と比べると圧倒的に遅くはなる。WhereSelectReverseArrayIteratorとか作れば全然違うのだろうけど。しかしそこまではやらないにしても、なんでArrayを返してくれないのか。内部がArrayならその後のSelectもWhereもすごく速くなるのに。後ろから順に辿るのでなく逆から順に配列にコピーすればいいだけの話ではないか。ICollectionの場合逆から順に配列にコピーしていって返してくれればいいだけじゃないか。でもArrayを返してるってばれたらArrayに依存されてしまって仕様変更できなくなるのか。じゃあIteratorを返せばいいのだろうけどinternalクラスだ。まあ俺がICollectionのReverseでArrayを返す分には問題ないわけだな。
結局LINQはJITコンパイルで最適化する前提なんだろうな。ずらずら書いたLINQを全部for文にしてくれればReverseなんてのもずっと速くなる。具体型への置き換えもSTLみたいにソースでやるのではなくて、実行回数測定してボトルネックにJITで最適化してやったらいいという話なんだろう。じゃあもういいや。