【发布时间】:2020-01-09 12:40:01
【问题描述】:
我有一本字典,例如:
d = {'a':'a-val', 'b':'b-val', 'c':'c-long-val'*1000}
而且我需要重复访问d['c'],如:
print('value of c is', d['c'])
x_queue.put(d['c'])
some_function(d['c'])
但我想知道将d['c'] 分配给变量并每次都使用它是否会更快:
c_value = d['c']` # is this assignment "worth it"?
print('value of c is', c_value)
x_queue.put(c_value)
some_function(c_value)
我的直觉是它可能取决于
-
d中的元素数量(d越大,查找密钥的成本越高) -
d['c']的大小(分配更大的d['c']成本更高)
但我真的不确定这些选项中的一个(或另一个?)是 faster 还是 more pythonic。
【问题讨论】:
-
尝试、衡量和决定...
-
谢谢,我可以(并且将)尝试衡量我的具体情况,但我仍然想知道为什么结果更好 - 如果确实如此。我对上述成本权衡的假设是否正确?
-
在几乎所有语言中,从变量中获取值通常比从容器中检索值更快。
-
一个只是从内存位置读取,另一个必须执行一些额外的计算。
-
有一些例外,比如闭包中的变量,需要经过激活记录。
标签: python python-3.x performance dictionary