以下两种替代方案中的哪一种更高效?任何建议,以进一步改善它?循环控制,什么是更高效
备选方案A:
for i in BAR_Items:
if BAR_Items[i] != A and SHAPE[i+"_SHP"] != A: continue
if i in Selection:
Selection.remove(i)
BAR_Items[i].clearActions()
BAR_Items[i].add(vizact.spinTo(axisAngle=[0,1,0,90],speed=300))
VFrame.SetStatusText(frame, i + " has been deselected. "+ str(Selection))
else:
Selection.append(i)
BAR_Items[i].add(vizact.spin(0,1,0,90,viz.FOREVER))
VFrame.SetStatusText(frame, i + " selected. " + str(Selection))
break
替代B:
for i in BAR_Items:
if BAR_Items[i] == A or SHAPE[i+"_SHP"] == A:
if i in Selection:
Selection.remove(i)
BAR_Items[i].clearActions()
BAR_Items[i].add(vizact.spinTo(axisAngle=[0,1,0,90],speed=300))
VFrame.SetStatusText(frame, i + " has been deselected. "+ str(Selection))
else:
Selection.append(i)
BAR_Items[i].add(vizact.spin(0,1,0,90,viz.FOREVER))
VFrame.SetStatusText(frame, i + " selected. " + str(Selection))
break
好的,我随后的建议,并发现它的定时的方法。测量500次后,B(0.001279264秒)比A(0.001966169秒)平均快(数字是平均值)。
当你测量它们时,你学到了什么?请包含运行这些信息的时间信息。 – 2010-11-04 21:33:26
@ S.Lott:@relima:除特殊情况外,它会运行吗?从列表中使用索引和项目是错误的。 – pyfunc 2010-11-04 21:38:56
@pyfunc:“它会运行吗?”?很重要。所有“什么是更有效率”的问题都应该包括以下指标:(a)实际运行和(b)哪个更有效。 – 2010-11-04 21:41:03