0
以下两个代码示例在性能方面是否相等?内存缓冲区和IO操作
代码示例1:
var count = 9999999999;
using(var sw = new StreamWriter())
{
for(int i=0;i<count;i++)
{
var result = SomeRelativeLongOperation(i);
sw.WriteLine(result);
}
}
代码示例2:
var count = 9999999999;
var resultCollection = new ....
using(var sw = new StreamWriter())
{
for(int i=0;i<count;i++)
{
resultCollection.Add(SomeRelativeLongOperation(i));
if(resultCollection.Count%100==0)
{
WriteBlock(sw,resultCollection);
resultCollection.Clear();
}
}
}
我知道,Windows使用的内存缓冲区的IO操作。所以,当我调用StreamWriter.WriteLine
方法时,它首先将数据存储在内存中,然后刷新到硬盘驱动器,对吧?
是的,他们都是平等的,他们都没有编译。 –
@Jon Skeet这是一个c#伪代码。当然,这不是编译。 – Neir0
伪代码不具有性能属性。给*真正*代码,我们可以谈论性能。鉴于'StreamWriter'将始终写入一个流,性能将部分取决于流的功能。 –