hg outgoing performance: bug or design limitation?
Andrei Loskutov
loskutov at gmx.de
Sun Dec 13 22:47:46 UTC 2009
Hi,
I'm trying to analyze performance/scalability issues in the Eclipse plugin
for Mercurial and see some strange differences for the "hg outgoing"
execution, depending which arguments are used in the template file.
For my experiments, I use hg 1.3.1 for Windows and a fairly large (270 MB)
public available repo: http://bitbucket.org/mirror/django/
To reproduce:
1) clone the repo to a local "django1" directory.
2) create a copy of the cloned repo as "django2"
3) strip 1000 changesets from "django1", create 5-10 new changes
4) start playing.
If "hg outgoing path_to_django1" is executed at "django2 directory", it
takes only 3 seconds to show me the 1000 changesets. In the output, per
default, it doesn't show the file names affected by the changesets.
Now the fun begins. If I specify a style/template file, where I use
{file_adds}, {file_dels}, or {file_mods} arguments to see which files are
affected by the outgoing command, hg needs 3 minutes (!) to print out the
required data (and it causes 100% of one of my two CPU's load all this
time). I've tried to play with the template, but it seems that it doesn't
matter how simple the formatting/how many arguments I use, the simple
presence of one of these "file" arguments causes hg to be exceptionally
slow.
I didn't played with the "hg incoming" yet, I guess it will behave similar.
So what, would you say, just do not add these arguments to the template?
It's simple: in the plugin, we show the outgoing/incoming changesets to
the user, *including* the changed files information. We MUST know which
files are affected by the changeset... So synchronization on such huge
repositories lead to a very loooong Eclipse response times...
Now the question:
1) I'm doing something wrong? Is there a better way to get the affected
paths for outgoing/incoming commands as using templates?
2) Is there any hidden parameter/command/setting which allows hg to be
faster with templates/outgoing/incoming commands?
3) if 1 and 2 are not applicable: is this performance drop a "simple" hg
bug, or is it "by design"?
Any help/hints are highly appreciated.
Regards,
Andrei Loskutov
@Home: http://andrei.gmxhome.de/
More information about the Mercurial
mailing list