私はサーバAに1GBを持っていますが、これをローカルに取得するにはRead()
メソッドを使用する必要があります。それはパッケージ(16517パッケージ)に分割されます。各パッケージは65536バイトのヘッダーを含みます。バイナリファイルにbyte []を書き込む最良の方法
現在、私はBinaryWriter
を使って各パッケージを直接ファイルに書き出します。しかし、それは5分(323642ミリ秒)以上かかった。
byte[]
に10MBのパッケージをいくつか追加しようとしましたが、時間が短縮されません(317397 ms)。
byte[]
をバイナリファイルに書き込むには、どのような方法が最適ですか?バイナリファイルに[]バイトを書き込むことが最善である方法
更新
const ulong Memory_10MB = 10485760; // 10MB
do {
byte[] packetData = Read(&totalSize, /*Other parameters*/ ,&hasFollowing);
if (package == null) {
// Process error
return;
}
dataSize += (ulong)packetData.Length;
if (dataSize >= Memory_10MB)
{
if (binaryWriter == null)
{
path = Path.GetTempFileName();
fileStream = new FileStream(path, FileMode.Append, FileAccess.Write, FileShare.Read);
binaryWriter = new BinaryWriter(fileStream);
if (responseData.Length > 5)
{
binaryWriter.Write(responseData.Skip(5).ToArray());
}
}
binaryWriter.Write(packetData);
}
else
{
responseData = Utilities.ConcatArrays(responseData, packetData);
}
} while (dataSize < totalSize);
// Process after got data
Windowsエクスプローラを使用してファイルをコピーすると、どれくらいかかりますか?それが何であれ、私はあなたがそれを多く改善できるとは思わないでしょう。 –
どのようにデータを書いていますか?あなたのコードを投稿してください。 –
まず、私の出力ファイルは 'Temp'フォルダの下にあります。私はそれを別のドライブにコピーします。約3秒かかる – GSP