# HG changeset patch # User Pierre-Yves David # Date 2014-09-18 22:52:45 # Node ID 00c8abe64cf3dba4693db99f1c915f1692d5b95a # Parent 13e3f07d74a343a352a8adafb37d32087a1d823f revset: prefetch an attribute in _generatorset.__iter__ Python's attribute lookup are expensible, lets do less of them. This gives us a 7% speedup on this revset iteration (from 0.063403 to 0.059032) diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -2667,12 +2667,13 @@ class _generatorset(object): # iteration. i = 0 genlist = self._genlist - consume = self._consumegen() + nextrev = self._consumegen().next + _len = len # cache global lookup while True: - if i < len(genlist): + if i < _len(genlist): yield genlist[i] else: - yield consume.next() + yield nextrev() i += 1 def _consumegen(self):