我在服務器A中有1GB,我必須使用Read()
方法才能將其置於本地。它被分成包(16517包)。每個包是65536字節包含頭。將字節[]寫入二進制文件的最佳方法
當前,我用BinaryWriter
直接將每個包寫入文件。但花了我5分多鐘(323642毫秒)。
我嘗試加入一些包到byte[]
的10MB,但它不會減少時間(317397毫秒)。
哪種方法最好將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