C#中字符串字典的最佳性能

sma*_*man 3 c# performance dictionary hashtable idictionary

我正在设计一个包含字符串层次结构的C#类,其中每个字符串都有0或1个父项.

我倾向于实现这一点,Dictionary<string,string>其中键是子,值是父.字典可能有很多值,但我不能说确切的大小.这看起来应该比创建包含父对象的复合包装器的执行速度更快,但我可能错了.

我可以采用另一种方法来确保更好的性能速度吗?

Ed *_* S. 11

从a中检索值Dictionary<K,V>非常快(接近O(1),即几乎恒定的时间查找,无论集合的大小如何),因为底层实现使用哈希表.当然,如果key类型使用可怕的哈希算法而不是性能会降低,但是你可以放心,这可能不是框架string类型的情况.

但是,正如我在评论中提到的那样,您需要回答几个问题:

  1. 定义最重要的性能指标,即时间(CPU)或空间(内存).
  2. 你有什么要求?这将如何使用?你最糟糕的情况是什么?这是否会在相对不频繁的查找中保留大量数据,是否需要在很短的时间内执行许多查找,或者两者都适用?

Dictionary<K,V>班还使用数组内部为你添加的东西也会增长.这对你好吗?同样,在任何人给你一个完整的答案之前,你需要在你的要求方面更加具体.