[PATCH 3 of 5] revset: avoid in loop lookup in _generatorset._consumegen
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Fri Sep 19 22:33:56 UTC 2014
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1398902208 25200
# Wed Apr 30 16:56:48 2014 -0700
# Node ID a2b305e889547516d7952ee8ecd67948cd8ff360
# Parent a38a9240a0c57afe2f4939f41a63382ef76b92fc
revset: avoid in loop lookup in _generatorset._consumegen
Python lookup are slow, let 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
@@ -2664,13 +2664,15 @@ class _generatorset(object):
else:
yield consume.next()
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
def set(self):
return self
More information about the Mercurial-devel
mailing list