[PATCH 2 of 4] revset: prefetch an attribute in _generatorset.__iter__

Pierre-Yves David pierre-yves.david at ens-lyon.org
Fri Sep 19 15:42:10 CDT 2014


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1411080765 25200
#      Thu Sep 18 15:52:45 2014 -0700
# Node ID 5923ec85150027d51233f04ecc2b59bfa69d2a40
# Parent  a38a9240a0c57afe2f4939f41a63382ef76b92fc
revset: prefetch an attribute in _generatorset.__iter__

Python's attribute lookup are expensible, lets do less of them.

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -2655,16 +2655,16 @@ class _generatorset(object):
         #
         # Getting ride of it would provide an about 15% speed up on this
         # iteration.
         i = 0
         genlist = self._genlist
-        consume = self._consumegen()
+        nextrev = self._consumegen().next
         while True:
             if i < len(genlist):
                 yield genlist[i]
             else:
-                yield consume.next()
+                yield nextrev()
             i += 1
 
     def _consumegen(self):
         for item in self._gen:
             self._cache[item] = True


More information about the Mercurial-devel mailing list