C# 如何在保持性能的同时读取大型日志文件?

C# 如何在保持性能的同时读取大型日志文件?,c#,C#,我正在读一个500MB+的日志文件,我想知道哪一个速度更快 我希望能够滚动浏览~1mil条目,但不会因为虚拟模式而变慢(希望如此)。它加载成功,但是滚动有点滞后 目前我正在虚拟模式下使用listview。 问题-虚拟检索项功能- 存储日志信息的每个条目的列表,以及用于显示列表中显示的特定索引的检索项调用,如list[e.getindex] 将每个日志信息的开头(日志文件中的位置)存储到列表中,然后调用read函数从位置读取转义字符(获取一个日志条目)。例如,第一个条目将读取0-转义字符,第二个条

我正在读一个500MB+的日志文件,我想知道哪一个速度更快

我希望能够滚动浏览~1mil条目,但不会因为虚拟模式而变慢(希望如此)。它加载成功,但是滚动有点滞后

目前我正在虚拟模式下使用listview。
问题-虚拟检索项功能-

  • 存储日志信息的每个条目的列表,以及用于显示列表中显示的特定索引的检索项调用,如list[e.getindex]
  • 将每个日志信息的开头(日志文件中的位置)存储到列表中,然后调用read函数从位置读取转义字符(获取一个日志条目)。例如,第一个条目将读取0-转义字符,第二个条目将读取16-43,第三个,43-60(日志条目的大小都不同)
  • 两者都有利弊,但我很想看看其他人对速度的看法

    一方面,(1)将1mil条目的所有数据读取到列表中,然后从内存中读取,因为虚拟模式有助于仅显示当时可查看的项目(大约10个)。然而,开销是所有数据都在内存中

    对于(2),内存中没有实际日志条目的存储,但是它必须调用file来扫描文件,并在特定行开始读取。它必须对每个项目进行此调用


    有备用的吗?这些是研究的最快方法。

    当你问问题时,请花点力气写下来——不要使用诸如“thru”之类的缩略语,每个句子的开头都大写等。要整洁,不是每个人都是以英语为母语的人,一个混乱的问题会让很少人完整地阅读。在你之前的问题()中,他们已经给了你答案-你不想把整个文件读入内存。@slugster-我大部分同意你的观点,但我认为“thru”是“through”的一个非常好的变体。IMHO,如果你不是以英语为母语的人,阅读起来就容易多了。