是否使用File.WriteAllText而不是File.WriteAllLines用于大文件?

时间:2015-10-08 14:21:25

标签: .net file-io

我正在将一个字符串列表输出到常规文本文件中。 这些文件最终可能会非常大。换句话说,我最终可能会将大量字符串列表刷新到磁盘中。

我假设使用

来做性能是明智的

File.WriteAllText("myFile.txt", string.Join(Environment.NewLine, myListOfStrings))

结束

File.WriteAllLines("myFile.txt", myListOfStrings)

因为我将所有IO操作总结为一个。

我是对的/这会影响性能吗?

修改:效果分析

我几乎没有使用VS性能分析工具,但是从我得到的输出(我选择了Instrumentation over CPU bound,因为它对我来说更有说服力来衡量它在函数F1,F2中花费了多少时间。 。) - 对于一个120.000行的txt文件,WriteAllText通过减少7%的时间来完成表现更好。

另一方面,简单地为秒表的开始/停止添加控制台输出显示WriteAllLines在0.20 ...秒内完成,而WriteAllText在0.30 ...

1 个答案:

答案 0 :(得分:1)

使用WriteAllLines的好处是,在将完整的字符串写入磁盘之前,您不需要将完整的字符串保留在内存中。您也不需要在内存中保留完整的物化集合,但可以提供IEnumerable。