8

MemoryStream を使用しているときに、データを一時的なバイト配列にコピー (したがって複製) することがよくあります。

MemoryStream では基になるバイト配列に直接アクセスできないため、リソースを少し無駄にしていると思います。

この状況で、MemoryStream の本当の利点は何でしょうか? メモリマップファイルのように機能することをどこかで読んだことがあります。データはアクセス時にのみディスクから取得されるため、メモリの消費が少なくなります。

本当?私はそうは思わない。多分それはFileStreamの場合ですか?

ご説明いただきありがとうございます。

4

2 に答える 2

4

私にとって、メモリ ストリームの主な利点は、動的に成長し、そのように最適化されていることです。それコピーしてメモリを複製しなければならないのは面倒ですが、プロセスの最後に渡されるバッファを構築することが主な用途である場合、その欠陥はいくらか償却されます。

FileStream とは対照的に、MemoryStreams ははるかに高速です。通常、RAM よりもはるかに多くのディスク容量があるため、FileStream よりもサイズが制限されています。したがって、速度が必要かスペースが必要かを決定する必要があります。

于 2009-06-12T17:25:14.357 に答える
3

getBuffer関数を使用して、基になるバイト バッファーを取得できます (ただし、指定したバイト配列から MemoryStream を作成した場合のみ。これは、バッファーを直接操作できるようにする場合に役立ちます)。

MemoryStream を使用する唯一の利点は、ストリームに基づく API を使用している場合、動的に拡張できるバイト バッファーが必要な場合です。

于 2009-06-12T17:27:18.640 に答える