Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revset.py @ 22528:b6dc3b79bb25
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)
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Wed, 30 Apr 2014 16:56:48 -0700 |
parents | 6e38b5d49977 |
children | 5c53d7888aef |
comparison
equal
deleted
inserted
replaced
22527:6e38b5d49977 | 22528:b6dc3b79bb25 |
---|---|
2670 else: | 2670 else: |
2671 yield consume.next() | 2671 yield consume.next() |
2672 i += 1 | 2672 i += 1 |
2673 | 2673 |
2674 def _consumegen(self): | 2674 def _consumegen(self): |
2675 cache = self._cache | |
2676 genlist = self._genlist.append | |
2675 for item in self._gen: | 2677 for item in self._gen: |
2676 self._cache[item] = True | 2678 cache[item] = True |
2677 self._genlist.append(item) | 2679 genlist(item) |
2678 yield item | 2680 yield item |
2679 self._finished = True | 2681 self._finished = True |
2680 | 2682 |
2681 def set(self): | 2683 def set(self): |
2682 return self | 2684 return self |