如何使用FileSteam加速读取文件

时间:2015-09-25 21:57:43

标签: c# performance stream filestream

我在搜索文件内容时遇到性能问题。我使用$ cat file {abcd}RandomAlphanumric begin {abcd}adfCvr1243C end 类来读取文件(每次搜索将涉及~10个文件,每个文件大小约为70 MB)。但是,在我的搜索过程中,所有这些文件都会被另一个进程同时访问和更新。因此,我无法使用$ sed -e 's/{abcd}[[:alnum:]]*/new_myvar/g' file new_myvar begin new_myvar end 来读取文件。使用FileStream中的缓冲区大小需要3分钟,即使我正在使用正则表达式。

有没有人遇到类似的情况,可以提供任何有关提高文件搜索性能的指示?

代码段

Buffersize

1 个答案:

答案 0 :(得分:-1)

前段时间我不得不分析许多FileZilla Server日志文件,每个> 120MB。 我使用一个简单的List来获取每个日志文件的所有行,然后在搜索特定行时获得了很好的性能。

List<string> fileContent = File.ReadAllLines(pathToFile).ToList()

但在你的情况下,我认为性能不佳的主要原因是没有读取文件。尝试StopWatch循环的某些部分,以检查花费最多时间的位置。如果在像你这样的循环中多次使用,正则表达式和TryParse可能非常耗时。