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'將始終寫入一個流,性能將部分取決於流的功能。 –