基于键长度的字典性能问题

3

如果我有一个带有巨大键的字典,会使查找速度明显变慢吗?

所谓的巨大键是:

{"THIS IS A HUGE KEY THAT IS VERY LONG1" : 1, "THIS IS A HUGE KEY THAT IS VERY LONG2" : 2}

一个长度为300的字符串键是否比长度为3的键明显更慢?因为字典的查找是O(1)


我猜测字典的实现将不得不对整个字符串进行哈希,因此查找成本可能比较短的字符串要高。但只要字符串的长度是一个常数,查找时间就会是O(1)。 - igon
计算较长字符串的 hash() 显然需要更长时间。由于字符串是不可变的,因此实现只需要计算一次并存储结果即可。 - John La Rooy
关于“通过缩短键大小来优化Python字典查找速度”的问题,请参见以下链接:https://dev59.com/pYTba4cB1Zd3GeqP6nqn - Andy
1个回答

2

从经验上来说,这并不难进行测试。

对于cpython而言,答案是否定的,它不需要更长的时间。其他实现可能会根据需要重新计算哈希值。如果你没有使用cpython,你需要自己去了解一下。

但是,如果键名足够大且数量足够多,你可能会注意到由于CPU缓存和交换带来的影响。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接