[PATCH 4 of 4 V2] revset: fast implementation for fullreposet.__and__

Durham Goode durham at fb.com
Tue Sep 23 17:40:59 CDT 2014


On 9/23/14, 12:28 PM, Pierre-Yves David wrote:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at fb.com>
> # Date 1398878911 25200
> #      Wed Apr 30 10:28:31 2014 -0700
> # Node ID c25eb94bc242f4c7c7615d9094944a5ec23307be
> # Parent  bfa28d90f22b612283e211a8472b8a46e48f1eea
> revset: fast implementation for fullreposet.__and__
>
> "And" operation with something that contains the whole repo should be super
> cheap. Check method docstring for details.
>
> This provide massive boost to simple revset that use `subset & xxx`
>
> revset #0: p1(20000)
> 0) wall 0.002447 comb 0.010000 user 0.010000 sys 0.000000 (best of 767)
> 1) wall 0.000529 comb 0.000000 user 0.000000 sys 0.000000 (best of 3947)
>
> revset #1: p2(10000)
> 0) wall 0.002464 comb 0.000000 user 0.000000 sys 0.000000 (best of 913)
> 1) wall 0.000530 comb 0.000000 user 0.000000 sys 0.000000 (best of 4226)
>
> No other regression spotted.
>
> More performance are expected  in the future as more revset predicate are
> converted to use `subset & xxx`
>
> The relaxed way `fullreposet` handle "&" operation may cause some trouble for
> people comparing smartset from different filter level. I'm not sure such people
> exists and can improve that aspect in later patches.
>
Queued to the clowncopter repo.


More information about the Mercurial-devel mailing list