以下を使用してテキストファイルからデータを読み取るアプリがあります。
CRD.reader = new StreamReader(fn,Encoding.UTF8,true,1024);
CRD.readLine();
しかし、私はこのアプリの 16 個のインスタンスを 24 コアのマシンで並行して実行しています。これを行うと、単一のインスタンスを単独で実行するのにかかる時間よりも、合計時間が大幅に長くなります (それらが並行して実行されている場合でも)。これはディスクの競合が原因だと思いますか?
bufferedstream を使用するための提案を見ましたが、それが上記のコードとどう違うのかわかりません。確かに私が持っているようにバッファサイズを指定することによって-私はすでに「バッファリングされた」ストリームを使用していますか?
私のコードでは、バッファーのさまざまなサイズを試しましたが、大きな違いはないようです。
EDIT 1
bufferedstream が私がしていることとどのように異なるかを誰かが説明できれば、それは非常に役に立ちます
EDIT 2
大きなバッファを設定すると
CRD.reader = new StreamReader(fn,Encoding.UTF8,true,65536);
CRD.readLine();
最初の readLine でバッファ全体を強制的に埋めることはできますか? つまり、バッファがファイルサイズよりも大きい場合、ファイル全体をメモリに読み込むことができます/読み込む必要があります。オペレーティングシステムはそれだけのバッファを許可することで機能しているように思えますが、必ずしもそれを使用しているわけではありません.