我正在开发一个多语言ASP.NET网站。我希望用户能够随时添加翻译,因此我将翻译存储在数据库中并维护包含所有翻译(用于性能)的ASP.NET应用程序对象。我使用一个简单的Hashtable存储翻译,然后将其存储在Application对象中,并在呈现页面时引用它。大型密钥的最佳c#集合
一些翻译条目很短,有些很长。这完全取决于用户想要翻译的内容。无论何时站点正在呈现控制标签或帮助文本,它都会检查Hashtable以查看它是否包含英文版的翻译,如果是,则使用Hashtable版本(假设是外语用户 - 我使用单独的每种语言的应用程序级对象)。
典型的Hashtable条目可能是:key ='今天要做的事情',value ='Mon Charge pour aujourd'hui'。代码在表格中查找“今天要做的事情” - 如果找到了翻译,则使用它,如果不是,则只使用英文版。
我的问题是这样的:是一个Hashtable这个最高性能的集合?我可以通过使用不同的集合/密钥结构来提高性能/内存使用率,或者甚至完全使用不同的机制?我的想法是,我宁愿使用Application对象,而不是为每个翻译做不同的数据库读取 - 每页可能有数十个翻译呈现。
一个trie非常有效,因为这些键比平均使用时间要长得多,导致了巨大的Trie。因此你浪费记忆,性能也不会增加。尝试对较短的键很有用。 – Henri 2010-08-16 11:17:09