(追試)FileStreamとManifestResourceStream

ストリームを使って行単位で読込む方法の事を書いているのに、オンメモリも糞もないものだ、と自己嫌悪。納得がいかないので念のため、約3メガバイトXMLを用意して下記と同様のロジックを実行してみたところ、以下のように

           1回め   2回め
                                                                                            • -
マニフェストリソース 27437ms 27366ms ファイル       27500ms 27297ms

見事に差が出なかった。
(※これは特定の.NET実行環境における具体的なベンチマークテストではなく、単なるトイプログラムの処理結果なので、XMLの詳しい内容や環境、その他最適化に必要なパラメタは一切記述していないし、結果についても保証しないことに注意)

気になったのでCPUの使用率も見ていたのだが、1スレッドのみ占有して75〜80%の使用率。ということは、両処理における、システムリソースの使用率も同じ条件と考えて良いだろう。
.NETにおける、アセンブリへ埋め込みリソース(マニフェストリソース)へのアクセスはストリームとして使う限り、ファイルへのアクセスに比べて、少なくとも速度や効率面でのアドバンテージは無い、ということがこれではっきりした。

追記

やはり、これは不思議でもなんでもなく当たり前だということ。バイナリに埋め込まれたリソース、という昔からのイメージはなんとなく速そう(この「なんとなく」ってのが曲者)に感じるのだが、アセンブリのストリームを取得すること自体、通常はEXEかDLLのファイルを読む訳だから、近傍のファイルを読むこととなんら変わりはない訳だ。感覚だけで「〜は速そう」ってのは、やはりあてにならない。