[PATCH evolve-ext] inhibit: improve transaction marker perf

Martin von Zweigbergk martinvonz at google.com
Sun Nov 8 02:04:09 CST 2015


On Sat, Nov 7, 2015 at 10:15 PM Durham Goode <durham at fb.com> wrote:

>
>
> On 11/7/15 9:52 PM, Martin von Zweigbergk wrote:
>
>
>
> On Sat, Nov 7, 2015 at 5:21 PM Durham Goode <durham at fb.com> wrote:
>
>> # HG changeset patch
>> # User Durham Goode <durham at fb.com>
>> # Date 1446945001 28800
>> #      Sat Nov 07 17:10:01 2015 -0800
>> # Node ID 7c680f209f7af35c7c476eecc2f9eec13b32ad62
>> # Parent  48547b4c77defdd17c670b1eb0eb94272edf0207
>> inhibit: improve transaction marker perf
>>
>> The old algorithm was a revset "::X and obsolete()". This was inefficient
>> because
>> it requires walking all the way down the ancestor chain (since the revset
>> did
>> not know it could stop walking at public nodes).
>>
>
> I was hoping to reproduce the slowness on the Mozilla repo (270k
> revisions), but "hg log -r '::tip and obsolete()'" runs in 180 ms. Do you
> have a better command for me to try? How many obsmarkers in the repo you
> tried it on?
>
> You need to make sure you pass --hidden, otherwise the obsolete() revset
> resolves to an empty set and tests against it are cheap.
>

I'm still not able to reproduce this :-( Some tests take ~800 ms, but most
of that time seems to be related to loading obsmarkers and not about
iterating over the revset.

I wanted to see if I could get the same results by playing with the revset
optimizer. I have never looked at that code before and I don't know if it's
a good idea. If it is, I'll have to let you do it yourself since I can't
even test it.


>
> I have 1500 obs markers, if that affects things.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20151108/d36a0fdd/attachment.html>


More information about the Mercurial-devel mailing list