0

许多算法需要将键映射到数据值。假设我需要将一个实体映射到另一个实体。

map = {}
obj1 = ClassA()
obj2 = ClassB()

现在我可以通过两种不同的方式做到这一点:

map[obj1] = obj2

或者

map[obj1.uniqueName] = obj2

专家会使用哪个版本?或者哪个版本更快?

使用字符串作为键还是实体本身更好(更快)?有任何性能差异吗?

4

1 回答 1

1

有两个主要因素会影响您的表现:

  1. hash() 方法的速度。(即,__hash__
  2. 哈希冲突的频率。

字符串散列通常既相当快又具有良好的属性,这意味着散列唯一字符串是一个很好的默认选择。但是,如果您可以为您的类提供一个非常快速且无冲突的哈希函数,那将是最佳选择。

(就个人而言,由于懒惰,我会选择弦乐。)

于 2013-04-18T11:43:50.287 回答