C#-使用内存映射文件和并行循环搜索文本文件内容

C#-使用内存映射文件和并行循环搜索文本文件内容,c#,file,io,C#,File,Io,我正在寻找一种快速读取文本文件内容的方法,例如:在20秒内读取2GB文件(无需将整个文件加载到内存中,从而保持内存使用率较低) 我读过有关内存映射文件的内容。CreateFromFile方法可以在内存中创建文件映射。我已经测试了这段代码: using(var mmf1 = MemoryMappedFile.CreateFromFile(file, FileMode.Open)) { using(var reader = mmf1.CreateViewAccessor()) {

我正在寻找一种快速读取文本文件内容的方法,例如:在20秒内读取2GB文件(无需将整个文件加载到内存中,从而保持内存使用率较低)

我读过有关内存映射文件的内容。
CreateFromFile
方法可以在内存中创建文件映射。我已经测试了这段代码:

using(var mmf1 = MemoryMappedFile.CreateFromFile(file, FileMode.Open)) {
    using(var reader = mmf1.CreateViewAccessor()) {
        //...
    }
}
我的问题是:这是将文件索引到内存中以便快速搜索的正确方法吗

一旦文件映射/索引到内存中,我希望使用
并行
循环来搜索文件内容。现在我正在测试实现。如果我理解正确,它使用1个线程读取文件中的一行,第2个线程检查/处理该行

是否可以使用1个线程从上到下读取和处理文件内容,使用第2个线程从下到上读取文件内容,从而将搜索速度提高2倍


因为一旦找到所需的内容,所有线程都必须停止搜索。

这确实是可能的。无论这是个好主意还是坏主意,你都需要尝试一下,并对自己进行测量。并行读取大量数据的速度很可能比顺序扫描慢。我的理解是,MMFiles优化了多个处理程序对文件的分块访问()。但是如果你需要搜索一个大的文本,我想第一件事就是创建一个索引。。不知道你在找什么。。但是也许建立一个单词索引会有帮助吗?你想要最快的光盘读取速度,那就是从头到尾的顺序读取。您受到硬件的限制,内存映射文件对此没有帮助。我正在寻找一种快速填充listView/listBox的方法,就像大型文本文件查看器一样。我到处都在读,不建议将整个文件加载到内存中。大文本文件查看器在10秒内将1GB的文件加载到listbox/listview中,并且内存从未超过10MB!这是怎么做到的?