[Python-Dev] Mercurial sluggishness (was: this is what happens if you freeze all the modules required for startup)

Paul Moore p.f.moore at gmail.com
Tue Apr 15 19:36:58 CEST 2014


On 15 April 2014 18:09, Daniel Holth <dholth at gmail.com> wrote:
> For me Python's startup time (warm) takes about 1/4 of the hg startup
> time in the worst case. I expect to both notice and appreciate any
> speedups and encourage all optimizers to optimize.

My experience is essentially irrelevant (as a Windows user, the OS
process creation time makes any of the numbers people are quoting for
Unix little more than a pipe dream for me :-)) but it seems to me that
the key measure of "sluggishness" tends to be on the tiny query
operations (the things people put in their prompt). Nobody cares about
process startup time on a hg clone of a 1GB repo across the network.
But "hg status" to get details of the current repo to show in your
prompt has to be very fast, or people complain "it's slow" [1].

On that point, I suspect that git's approach of having a plethora of
tiny focused commands each of which does only what it needs to,
probably makes for a better "simple things are fast" experience than a
single-application architecture like hg. (On the other hand, it
utterly kills git's performance on Windows, so you win some, you lose
some).

So improving Python startup time will probably help with Mercurial's
*perceived* speed - but architecture improvements focusing on running
enquiry type commands really fast may help as much if not more (I
don't know how much they've optimised for that case in the past).

On 15 April 2014 18:29, Antoine Pitrou <solipsis at pitrou.net> wrote:
> Well, if we optimize 11% out of that 1/4, I don't expect you to notice the
> speedup at all ;-)

Yeah, in reality no one thing is ever going to be *that* perceptible.
But as they say, "every little helps".

Paul

[1] Windows process startup times affect this *a lot*. My powershell
prompt function directly reads the files in .hg/.git because running
the actual commands is far too slow for a prompt function.


More information about the Python-Dev mailing list