例如:
if(self._ConnectGenes[innov_num].is_enabled() and self._ConnectGenes[innov_num].is_computed()==False):
self._NodeGenes[self._ConnectGenes[innov_num]._Out].value += self._NodeGenes[next] * self._ConnectGenes[innov_num]._Weight
self._ConnectGenes[innov_num].set_computed(True)
queue.append(self._ConnectGenes[innov_num]._Out) #Append the next skirt to the graph
我们这里有一些字典本身的访问权。连接基因,项目存储在键中 自我连接基因[innov_num]
我想知道,如果我们有一个关于该项目的参考,会更好吗,例如
genome = self._ConnectGenes[innov_num]
if(genome.is_enabled() and genome.is_computed()==False):
self._NodeGenes[genome._Out].value += self._NodeGenes[next] * genome._Weight
genome.set_computed(True)
queue.append(genome._Out) #Append the next skirt to the graph
这会节省一些性能吗? 因为这段代码会被多次调用
解决方案:
实验:
import time
#----Preparation
access_dict = {"num":4}
#----Timing
start = time.time()
for i in range(100000000):
access_dict["num"] = access_dict["num"] +1
end = time.time()
print("Dict access",end - start)
#----Timing
start = time.time()
for i in range(100000000):
access_dict["num"] +=1
end = time.time()
print("Dict access2",end - start)
#----Timing
start = time.time()
ref = access_dict["num"]
for i in range(100000000):
ref = ref +1
end = time.time()
print("Ref access",end - start)
#----Timing
start = time.time()
ref = access_dict["num"]
for i in range(100000000):
ref += 1
end = time.time()
print("Ref access2",end - start)
输出:
Dict access 7.079166889190674
Dict access2 6.49668288230896
Ref access 5.318424224853516
Ref access2 5.393644332885742
访问dict时,每次都会产生哈希/查找开销。如果要在同一代码块中多次使用同一个键,则重复查找同一个键是浪费周期。将结果存储在变量中会更快更干净
相关问题 更多 >
编程相关推荐