我正在开发一款需要处理大约400万个英语句子的C#应用程序。所有这些句子都被存储在一棵树中,其中树中的每个节点都是一个类,具有以下字段:
class TreeNode
{
protected string word;
protected Dictionary<string, TreeNode> children;
}
我的问题是,当应用程序达到第2000000个句子时,它将使用完所有RAM(我有2 GB RAM)。因此,它只能处理一半的句子,然后速度显着减慢。
我该怎么做来尝试减少应用程序的内存占用?
编辑:让我更详细地解释一下我的应用程序。所以我大约有300,000个英文句子,并且对于每个句子,我正在生成更多的子句,例如:
示例: 句子:“足球是一项非常流行的运动” 我需要的子句:
- 足球是一项非常流行的运动
- 是一项非常流行的运动
- 一项非常流行的运动
- 非常流行的运动
- 流行的运动
- 运动
每个句子都按单词存储在树中。因此,考虑上面的示例,我有一个TreeNode类,它的word字段为“足球”,孩子列表具有单词“是”的TreeNode。is节点的子节点是a节点。“a”节点的子节点是“very”节点。我需要逐字存储句子,因为我需要能够搜索以示例开始的所有句子:“Football is”。
因此,基本上对于句子中的每个单词,我都会创建一个新的(子句)。这就是最终产生4,000,000个不同句子的原因。将数据存储在数据库中不是选项,因为应用程序需要一次性处理整个结构。如果我必须将所有数据写入数据库,它还将进一步减慢流程。
谢谢
children
字典中是否只包含一个项目(例如您的示例中的“is”)?那么为什么需要一个字典呢? - Dirk Vollmar