擅长:python、mysql、java
<p>每次运行此函数时,您都在创建和销毁一个字典(<code>distances</code>),其中包含一百万项,但这甚至不是必需的。试试这个:</p>
<pre><code>def node_closest_to_location_in_space(location_in_space)
global node_location_by_nodeId
closest_node = None
closest_distance = 1e100 # An arbitrary, HUGE, value
for NodeId, NodeLocation in node_location_by_nodeId.iteritems():
distance = (NodeLocation[0] - location_in_space[0])**2 +
(NodeLocation[1] - location_in_space[1])**2 +
(NodeLocation[2] - location_in_space[2])**2
if distance <= closest_distance:
closest_distance = distance
closest_node = NodeId
return (closest_node, closest_distance)
</code></pre>
<p>我相信每次调用函数时创建和删除<code>distances</code>dict所涉及的开销是影响性能的因素。如果是这样,这个版本应该更快。你知道吗</p>