如果我有一个带有巨大键的字典,会使查找速度明显变慢吗?
所谓的巨大键是:
{"THIS IS A HUGE KEY THAT IS VERY LONG1" : 1, "THIS IS A HUGE KEY THAT IS VERY LONG2" : 2}
一个长度为300的字符串键是否比长度为3的键明显更慢?因为字典的查找是O(1)
。
如果我有一个带有巨大键的字典,会使查找速度明显变慢吗?
所谓的巨大键是:
{"THIS IS A HUGE KEY THAT IS VERY LONG1" : 1, "THIS IS A HUGE KEY THAT IS VERY LONG2" : 2}
一个长度为300的字符串键是否比长度为3的键明显更慢?因为字典的查找是O(1)
。
从经验上来说,这并不难进行测试。
对于cpython而言,答案是否定的,它不需要更长的时间。其他实现可能会根据需要重新计算哈希值。如果你没有使用cpython,你需要自己去了解一下。
但是,如果键名足够大且数量足够多,你可能会注意到由于CPU缓存和交换带来的影响。
hash()
显然需要更长时间。由于字符串是不可变的,因此实现只需要计算一次并存储结果即可。 - John La Rooy