需要将数G的数据写入硬盘,预想中先写入内存,等到一定大小(如20M)再写入硬盘,效率要高于直接写硬盘,但测试结果却没有证明自己的预期。请各位高手看看是哪里出问题了,多谢。
一次写入,不缓存,大约30秒执行完成FileStream fileStream = new FileStream(path, FileMode.Create);
BinaryWriter binaryWriter = new BinaryWriter(fileStream);
for (int i = 0; i <= 100000000; i++)
{
binaryWriter.Write("c" + i);
}
fileStream.Close();
缓存大约20M再写入,需要37秒左右执行完成 MemoryStream memoryStream = null;
BinaryWriter binaryWriter = null; FileStream fileStream = new FileStream(path, FileMode.Create);
for (int i = 0; i <= 50000000; i++)
{
if (memoryStream == null)
{
memoryStream = new MemoryStream();
binaryWriter = new BinaryWriter(memoryStream);
} binaryWriter.Write("c" + i); if (i % 2000000 == 0)
{
memoryStream.WriteTo(fileStream);
binaryWriter.Close();
memoryStream.Close();
binaryWriter = null;
memoryStream = null;
}
}
fileStream.Close(); binaryWriter.Close();
}
if (memoryStream != null)
{
memoryStream.Close();
} fileStream.Close();
一次写入,不缓存,大约30秒执行完成FileStream fileStream = new FileStream(path, FileMode.Create);
BinaryWriter binaryWriter = new BinaryWriter(fileStream);
for (int i = 0; i <= 100000000; i++)
{
binaryWriter.Write("c" + i);
}
fileStream.Close();
缓存大约20M再写入,需要37秒左右执行完成 MemoryStream memoryStream = null;
BinaryWriter binaryWriter = null; FileStream fileStream = new FileStream(path, FileMode.Create);
for (int i = 0; i <= 50000000; i++)
{
if (memoryStream == null)
{
memoryStream = new MemoryStream();
binaryWriter = new BinaryWriter(memoryStream);
} binaryWriter.Write("c" + i); if (i % 2000000 == 0)
{
memoryStream.WriteTo(fileStream);
binaryWriter.Close();
memoryStream.Close();
binaryWriter = null;
memoryStream = null;
}
}
fileStream.Close(); binaryWriter.Close();
}
if (memoryStream != null)
{
memoryStream.Close();
} fileStream.Close();
详情可以在我的电脑=>管理=>磁盘管理=>U盘=>右键=>属性
看到相关内容.