Mercurial > hg
comparison hgeditor @ 20828:3210b7930899
revset: improve performance of _generatorset.__contains__ (issue 4201)
_generatorset.__contains__ and __contains__ from child classes were
calling into __iter__ to look for values. Since all
previously-encountered values from the generator were cached and checked
in __contains__ before this iteration, __contains__ was effectively
performing iteration busy work which could lead to an explosion of
redundant work.
This patch changes __contains__ to be more intelligent. Instead of
looking at all values via __iter__, __contains__ will instead go
straight to "new" values from the underlying generator.
On a clone of the Firefox repository with around 200,000 changesets,
this patch decreases the execution time of the revset '::(200067)::'
from ~100s to ~4s on the author's machine. Rebase operations (which use
the aforementioned revset), speed up accordingly.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 24 Mar 2014 20:00:18 -0700 |
parents | 2b440bb8a66b |
children | 1aee2ab0f902 |
comparison
equal
deleted
inserted
replaced
20827:ca5dd216cb62 | 20828:3210b7930899 |
---|