0

私のアプリケーションは、そのサーバーに対して多数の迅速な Web サービス呼び出しを行います。各呼び出しは、Web サービス呼び出しに引数として渡すオブジェクトをシリアル化します。多くの場合、そのオブジェクトは非常に小さいものにシリアル化されます...たとえば5KB以下...その場合、単にMemoryStreamにシリアル化してから、そのMemoryStreamからバイトを送信します。しかし、時々、そのオブジェクトは非常に巨大なものにシリアル化されます... 50MB (50,000KB) など... その場合、MemoryStream にシリアル化するとラージ オブジェクト ヒープが著しく損なわれます...したがって、FileStream にシリアル化する方が適切です。

FileStream のバッファ サイズが十分に大きい場合、FileStream に書き込み、最初に戻ってシークし、そこから読み取ることができ、実際にはメモリ バッファから抜け出せないはずです...そのように私のスレッドは(理論的には)そのバッファサイズまでメモリとほぼ同じ速度で実行する必要があります。真実?

(はい、いくつかの測定を行うつもりです...しかし、動作が異なる場合や、結果を無効にする可能性のある関連する問題を簡単に見逃す可能性があります...ここの集合知性がよく教えてくれることです。ありがとう! !)

ファイルを大きくする必要がある場合にのみファイルを使用する、ファイルに裏打ちされたメモリ ストリームを持つ信頼性の高い高性能なアプローチはありますか? (答えが「ええ、必要なメモリストリームのサイズに設定されたバッファサイズで FileStream を使用してください。」であることを願っています。)

4

0 に答える 0