如何提高编写器的写入速度?

时间:2011-08-05 06:37:31

标签: c# winforms web-applications

如何提高编写器的速度以编写83MB的csv文件。 我已经将buffersize列入65536,但它也消耗了更多的时间。如何提高速度。


StreamWriter writer =new streamWriter(
      new FileStream(filePath, FileMode.CreateNew), Encoding.UTF8, 65536))
string str=string.Empty;
while((str = reader.ReadLine())!=null)
    writer.WriteLine(str)}        
writer.Close()

3 个答案:

答案 0 :(得分:2)

根据CSV文件包含的行数,您最终可能会执行一个执行数百万次的循环。多次访问磁盘不是一个好主意。

简单的出路(如果你有内存)是在内存中的字符串[]中读取整个CSV文件(我认为使用File.ReadAll()),进行处理并将其写入一次(File.WriteAll () 我认为)。 这将大大提高您的表现。

另一种方法是使用异步读/写,增加缓冲区大小并创建一种机制来读取更大的数据块。如果你只读1行就有一个很大的缓冲区对你不会有帮助。

答案 1 :(得分:0)

我会尝试更多地提高缓冲区。在该缓冲区大小,它将需要超过8200次写入来创建整个文件。尝试256K或512K左右的缓冲区。

答案 2 :(得分:0)

根据您的评论显示您的代码实际执行的操作:

File.WriteAllText( filePath, reader.ReadToEnd() );