如何提高编写器的速度以编写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()
答案 0 :(得分:2)
根据CSV文件包含的行数,您最终可能会执行一个执行数百万次的循环。多次访问磁盘不是一个好主意。
简单的出路(如果你有内存)是在内存中的字符串[]中读取整个CSV文件(我认为使用File.ReadAll()),进行处理并将其写入一次(File.WriteAll () 我认为)。 这将大大提高您的表现。
另一种方法是使用异步读/写,增加缓冲区大小并创建一种机制来读取更大的数据块。如果你只读1行就有一个很大的缓冲区对你不会有帮助。
答案 1 :(得分:0)
我会尝试更多地提高缓冲区。在该缓冲区大小,它将需要超过8200次写入来创建整个文件。尝试256K或512K左右的缓冲区。
答案 2 :(得分:0)
根据您的评论显示您的代码实际执行的操作:
File.WriteAllText( filePath, reader.ReadToEnd() );