【发布时间】:2019-03-06 13:05:29
【问题描述】:
我发现我在嵌套循环中非常频繁地使用静态字符串访问 Python 字典。我猜 Python 需要对每次访问的字符串进行哈希处理,这可能会影响性能。
例如:
for d in large_list_of_dicts:
for d2 in d['trees']:
v = d2['leaves']
Cython 是否将这些静态字符串键散列为散列值(仅一次)并重用这些散列?如果是这样,这是否会显着提高此类循环的性能?
【问题讨论】:
-
我不熟悉 Cython,但即使在常规 Python 中,也最多会为给定的字符串对象计算一次哈希——它被缓存在对象中。我无法想象 Cython 会放弃这样一个基本的优化。
-
@jasonharper 谢谢,我没有意识到这一点。所以听起来在这里使用 Cython 并没有什么好处。
标签: python dictionary optimization cython