以下兩種替代方案中的哪一種更高效?任何建議,以進一步改善它?循環控制,什麼是更高效
備選方案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