如何在运行时处理大对象

时间:2016-12-14 15:13:03

标签: c# text-files xml-serialization virtual-memory

我正在开发一个数据挖掘C#项目,在那里我处理16 MB的文本文件。我应该在运行时处理这些文件,这样在用户选择文件后,程序应该逐个加载它们,搜索关键字,将它们分成对象。因此,该程序可能有大约50个对象,每个对象大约10 MB,因此大约500 MB的RAM。

我不需要同时使用所有这些对象,因此我需要将它们存储在RAM之外的某个位置,然后加载我需要的对象。

处理这种情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

恕我直言,我认为您应该在用户选择文件后将所有文件保存在数据库中,以防您想要保留这些文件。然后你可以处理处理问题。例如:

如果要解析文件并从中提取信息。当然你应该考虑使用ANTLR。执行AST(抽象语法树)之上的所有操作。如果您知道文本的结构,那么您可以定义语法并从文件中加载整个AST。

如果您只想对文字进行简单搜索,请尝试指向Knuth–Morris–Pratt algorithm或使用Trie

为了性能,尝试使用StringBuilder而不是常规字符串类