快速文本阅读(File.ReadAllText()和/或StreamReader.ReadToEnd()的替代方案)

Yve*_*lpe 4 c# string performance pinvoke text

快速阅读的问题:我想知道是否有其他技术我忽略了,也许p /调用某个库(无论是winapi还是第三方库).欢迎提出所有建议.

问题的完整上下文:对于给定的用例,我需要将文本文件读入内存,然后我可以操作.问题不在于操作,而在于I/O. 我目前正在使用以下C#技术:

1)"文件"的ReadAllText()方法

var content = File.ReadAllText(file.FullName);
Run Code Online (Sandbox Code Playgroud)

2)"StreamReader"的ReadToEnd()方法

var content = String.Empty;
using(var streamReader = File.OpenText(file.FullName)) {
    content = streamReader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)

3)我也尝试过使用BufferedStream方法2

对于介于5到20MB之间的文件,所有文件的性能大致相同.那么,接下来的问题是:我想知道是否有其他技术我忽略了,也许p /调用某个库(无论是winapi还是第三方库).欢迎提出所有建议.

Dav*_*nan 5

您列出的所有变体的瓶颈将是I/O. 将完整文件从磁盘读入内存的任何方法都会遇到同样的瓶颈.

因此,可以合理地得出结论,没有替代方法会产生重大收益.当然,您会发现这些方法与其他方法之间的性能略有不同.但你永远不会看到数量级的收益.