私のアプリケーションでは、多くのDeflate圧縮ブロック(および他のタイプの圧縮と暗号化を含む)を含むファイルの圧縮を解除する必要があります。メモリプロファイリングは、デフレートストリームコンストラクタがアプリケーションのメモリの大半をその存続期間(54.19%、DeflateStream.readが12.96%、それ以外は2%未満)で割り当てることを示します。DeflateStreamを使用しているときにメモリを少なくすることはできますか?
各ファイルブロックは通常4KiB(圧縮解除)で、DeflateStreamのコンストラクタは32KiBよりもわずかに多く(おそらくスライディングウィンドウ用に)割り当てます。ガベージコレクターは、これらのすべての水溜まりの流れがほとんど時間のない状態で続く(1つは次のものが入る前に消え去る)ので、フィールドデーを持っています!さようならキャッシュ効率。
私はDeflateStreamを使い続けることができますが、もっと良い選択肢があるのでしょうか?ストリームをリセットしてもう一度使用する方法がありますか?
私は時間プロファイリングをよく見て、あなたが正しいことを発見しました。時間の大部分は、出力を操作する関数に費やされているようです。 –