[PATCH 3 of 3] revset: speedup matching() by first matching fields that take less time to

Angel Ezquerra angel.ezquerra at gmail.com
Sat Apr 14 07:05:01 CDT 2012


On Apr 14, 2012 9:12 AM, "Patrick Mézard" <patrick at mezard.eu> wrote:
>
> Le 14/04/12 01:42, Angel Ezquerra a écrit :
> > # HG changeset patch
> > # User Angel Ezquerra <angel.ezquerra at gmail.com>
> > # Date 1334360463 -7200
> > # Node ID 4075aa74e8398584a47f20c9b51af7e0d788dbcc
> > # Parent  e735d3f86e7f96ebd78ea5080eb8f2db2220e63f
> > revset: speedup matching() by first matching fields that take less time
to
> > match
> >
> > This patch sorts the fields that are passed to the matching function so
that it
> > always starts by matching those fields that take less time to match.
> >
> > Not all fields take the same amount of time to match. I've done several
> > measurements running the following command:
> >
> > hg --time log -r "matching(1, field)"
> >
> > on the mercurial repository, and where 'field' was each one of the
fields
> > accepted by match. In order to avoid the print overhead (which could be
> > different for different fields, given the different number of matches)
I used a
> > modified version of the matching() function which always returns no
matches.
> >
> > These tests showed that different fields take wildly different amounts
of time
> > to match. Particulary the substate field takes up to 25 seconds to
match on my
> > machine, compared to the 0.3 seconds that takes to match the phase
field or the
> > 2 seconds (approx) that takes to match most fields. With this patch,
matching
> > both the phase and the substate of a revision takes the same amount of
time as
> > matching the phase.
> >
> > The field match order introduced by this patch is as follows:
> >
> > phase, parents, user, date, branch, summary, files, description,
substate
> >
> > An extra nice thing about this patch is that it makes the match time
stable.
>
> Could you add tests in test-revset.t?
>
> --
> Patrick Mézard

I'll give it a try although I doubt I can send them before the code freeze,
specially since I am not sure that the revset tests run on windows.

I guess the need for a test its unrelated to this particular patch, isn't
it?

Angel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20120414/39384e33/attachment.html>


More information about the Mercurial-devel mailing list