2016-05-04 6 views
3

私はテキストファイルを修正し、オリジナルをそのまま維持する必要があります。今はリーダライターを使ってファイルを読んでいます。ファイルを読み書きするのはファイルの移動と同じ時間ですか?

残念ながら、テキストファイルは巨大で約2GBで、テキストファイルはネットワークドライブ上にあるので、完了には約1時間かかります。

file.Moveを使用すると、読み書きより高速になりますか?たとえば、テキストファイルをローカルマシンに移動し、変更を行い、それを元に戻しますか?

オリジナルのコピーを作成し、読み書きするのではなく、そのように修正しますか?

私の現在のコード:

try 
{ 
    using (StreamReader reader = new StreamReader(filePath)) 
    { 
     using (StreamWriter writer = new StreamWriter(output)) 
     { 
      //go through the whole txt file 
      while (!reader.EndOfStream) 
      { 
       //gets the line 
       line = reader.ReadLine(); 
       if (!modification case goes here)) 
       { 
        writer.Write(line); 
       } 
      } 
     } 
    } 
    } 
} 

任意の助けをいただければ幸いです!

+1

ローカルマシンにファイルをコピーしてからもう一度やり直してみましたか?これにより、ファイルをローカルで変更するのに時間がかかります。その前後でコピーが1時間に近づくと、ローカルで修正を行うことで多くのメリットを実現することはほとんどありません。 –

+1

パフォーマンスヒットはどこですか?それがライン上にない場合= reader.ReadLine();ファイルの場所は問題ではありません。私はボトルネックがあなたの変更チェックであると推測しています。 ReadLine();あなたのボトルネックです。ファイルをローカルに移動してから戻ってくると助けになるとは思わない。 –

+0

提案していただきありがとうございます!私は今すぐそれらをテストし、報告する。 – Childishforlife

答えて

3

ネットワークドライブが接続されていると、ファイルをローカルにコピーして何かを実行して元に戻すほうが速いです。この方法では、ディスクドライブのハードウェアレベルで実装されているキャッシングと先取り(プリキャッシング)を使用します。ネットワークのスループットは常に、Network_T_Rate/10の平均公式に制限されます(メガバイト/秒)。たとえば、企業ネットワークの大部分として100Tがある場合、片方のディスクがネットワークよりも速いため、読み取りまたは書き込みに関係なく、〜10Mb/sが得られます。言い換えれば、あなたのボトルネックはネットワークです。

+0

ありがとうzmechanic! – Childishforlife

関連する問題