如何存储50,000个英文单词,以便尽可能减少内存

时间:2012-04-30 06:05:25

标签: c# data-structures trie

我必须在内存中存储大约50,000个英文单词,我想知道在内存占用(和加载速度)方面最好的数据结构。它会成为特里吗?我如何将其序列化为文件?还有什么比这更好的吗?

基本上,一旦将~50,000个单词加载到内存中,我只需要检查单词是否存在。

4 个答案:

答案 0 :(得分:1)

嗯,根据您提供的指南,简单的List会更好。

提取时间明显慢于TrieDictionary,但

  

“在内存占用(和加载速度)方面”

它将需要非常少的内存开销,并且加载速度更快(因为没有构建索引/前缀数据结构)。

有关内存比较的详细信息,请参阅此blog post(在JavaScript中,但仍然适用)。

答案 1 :(得分:0)

根据this回答,Dictionary课程就是您所需要的。根据MSDN文档,您应该使用TryGetValue方法来访问您的数据:

  

如果您的代码经常尝试访问,请使用TryGetValue方法   不在字典中的键。使用这种方法更多   比捕获Item抛出的KeyNotFoundException更有效   属性。

答案 2 :(得分:0)

答案 3 :(得分:0)

是的,特里听起来还不错。对于序列化,您有两种选择:

  1. 使用原始单词列表并重建trie。它应该足够快,我猜,但你可能想要描述它。
  2. 只需对该类型使用普通的.NET序列化并将其转储到文件中。但是,这可以防止其他语言的程序阅读它。