散列对象的repr而不是属性的元组

时间:2017-05-12 19:52:43

标签: python-2.7 hash

覆盖自定义对象的__hash__()方法的常用方法是使用对象属性生成元组t并应用return hash(t),如此this question中所述。

我有一个程序这样做,在运行cProfile之后,我发现这种方法是我程序的瓶颈。我做了以下测试并得到了结果:

>>> t1 = tm.Timer(setup="x = str((10,12))", stmt="hash(x)")
>>> t2 = tm.Timer(setup="x = (10,12)", stmt="hash(x)")
>>> min(t1.repeat(100)), min(t2.repeat(100))
(0.04663395881652832, 0.05523419380187988)

我从中得出结论,在哈希函数上使用字符串的速度比 使用元组。鉴于我已经为我班级的每个对象提供了__repr__()实现,我觉得不应该有任何问题。在更改我的程序之前,这种方法是否存在任何问题(或者我的测试方法学)?

0 个答案:

没有答案