import datetime
x = ['a','aa','aaaaaaaaaaaaaaaaaaaaaaaaaaaa','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa']
for i in range(len(x)):
for j in range(len(x)):
print "Checking for: " + x[i] + " " + x[j]
a = datetime.datetime.now()
h = hash((x[i],x[j]))
b = datetime.datetime.now()
c = b - a
print "Time taken : " + str(c.microseconds)
我做了一个小测试来验证这个假设。结果似乎并不取决于输入的长度。在
结果
^{pr2}$它完全取决于被散列的类型。以下是CPython 2.7.13中的一些简单测试,这不是唯一的选择:
请注意,对新创建的字符串进行哈希处理的方式是O(n),但是每个字符串都在缓存其哈希,以便在重复时将其摊销为常量时间(}的默认值)。在
^{pr2}$number=1000000
是{long
也是O(n),其中n是数字的宽度,因此是数量的对数。粒度是^{其他对象将有自己的行为,例如tuples将粗略地合计其内容的哈希时间。在
相关问题 更多 >
编程相关推荐