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