Two observations: 1 - The difference in run time with and without the dummy* globals is due to a difference in the number of invokations of the search() function: 1,140 resp. 27,530 in my environment.
To verify, just change the line def search(): .... to searches = 0 def search(): global searches searches += 1 .... and add at the very end print searches, "searches" 2 - The run times with and without the dummy* variables is equal(ly slow) if the LLentry() class and min() function call are modified to be independent of the object value. Change line class LLentry: pass to LLinst = 0 class LLentry(object): def __init__(self): global LLinst LLinst += 1 self.I = LLinst and change line mm = min((c.S, c) for c in rowitems(h))[1].D to mm = min((c.S, c.I, c) for c in rowitems(h))[2].D /Jean Brouwers -- http://mail.python.org/mailman/listinfo/python-list