# HG changeset patch # User Pierre-Yves David # Date 2014-04-30 23:56:48 # Node ID b6dc3b79bb2557f3588e7f74b2ba45cf4ea11d4d # Parent 6e38b5d4997788ee7accf4ab9cd1c8f8d504db7d revset: avoid in loop lookup in _generatorset._consumegen Python lookups are slow, so do all lookup outside of the for loop. This provide a small but still significant speedup: revset #0: 0:: 0) wall 0.063258 comb 0.060000 user 0.060000 sys 0.000000 (best of 100) 1) wall 0.057776 comb 0.050000 user 0.050000 sys 0.000000 (best of 100) diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -2672,9 +2672,11 @@ class _generatorset(object): i += 1 def _consumegen(self): + cache = self._cache + genlist = self._genlist.append for item in self._gen: - self._cache[item] = True - self._genlist.append(item) + cache[item] = True + genlist(item) yield item self._finished = True