Bug 4371 - Large phases movement in huge repo are super slow
Summary: Large phases movement in huge repo are super slow
Status: RESOLVED FIXED
Alias: None
Product: Mercurial
Classification: Unclassified
Component: Mercurial (show other bugs)
Version: 3.0
Hardware: PC Linux
: urgent bug
Assignee: Bugzilla
URL:
Keywords: regression
: 4379 (view as bug list)
Depends on:
Blocks:
 
Reported: 2014-09-18 00:59 UTC by Pierre-Yves David
Modified: 2015-01-22 15:04 UTC (History)
4 users (show)

See Also:
Python Version: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pierre-Yves David 2014-09-18 00:59 UTC
Some regression in revset add 5 minutes of phase movement when cloning the mozilla repository. See issue4352 for details on the revset issue.

Solving the revset regression is probably too big for stable. So this issue exists to discuss solution suitable for stable.
Comment 1 Pierre-Yves David 2014-09-20 01:31 UTC
*** Bug 4379 has been marked as a duplicate of this bug. ***
Comment 2 HG Bot 2014-09-27 16:00 UTC
Fixed by http://selenic.com/repo/hg/rev/300e07582e9b
Pierre-Yves David <pierre-yves.david@fb.com>
revset: add an optimised baseset.__contains__ (issue4371)

The baseset class is based on a python list. This means that base.__contains__
was absolutely as crappy as list.__contains__. We now rely on __contains__ from
the underlying set.

This will avoid having to explicitly convert the baseset to a set (using
baseset.set()) whenever one want fast membership test.

Apparently there is already code that forgot to do such conversions since we
observe a massive speedup in some test.

revset #25: roots((0::) - (0::tip))
0) wall 2.079454 comb 2.080000 user 2.080000 sys 0.000000 (best of 5)
1) wall 0.132970 comb 0.130000 user 0.130000 sys 0.000000 (best of 65)

No regression is observed in benchmarks.

This change improve the issue4371 back to acceptable situation (but are still
slower than manual substraction)

(please test the fix)
Comment 3 Matt Mackall 2015-01-22 15:04 UTC
Bulk testing -> fixed