在这个页面上,我看到了一些有趣的东西:
请注意,(在实践中)仅处理 str 键的 dicts 有一条快速路径;这不会影响算法的复杂性,但会显着影响常数因素:典型程序完成的速度。
那么它到底是什么意思呢?
这是否意味着使用字符串作为键总是更快?
如果是,为什么?
更新:
感谢您对优化的建议!但实际上我更感兴趣的是显而易见的事实,而不是我们是否应该或何时应该进行优化。
更新 2:
感谢您提供出色的答案,我将在此处引用@DaveWebb 提供的链接中的内容:
“……
ma_lookup最初设置为lookdict_string函数(在3.0 中重命名为lookdict_unicode),它假定字典中的键和正在搜索的键都是标准PyStringObject 的。然后它可以进行一些优化,例如减轻各种错误检查,因为字符串到字符串的比较不会引发异常。也不需要富对象比较,这意味着我们避免调用PyObject_RichCompareBool,并且总是直接使用_PyString_Eq。
……”
另外,对于实验数字,我认为如果没有 int 到 string 的转换,差异的大小会更大