[Python-Dev] Startup time
Guido van Rossum
guido@python.org
Tue, 06 May 2003 08:07:54 -0400
While Python's general speed has gone up, its startup speed has slowed
down!
I timed this two different ways. The first way is to run
python<version> -c "import time; print time.clock()"
On Unix, this prints the CPU time used since the process was created.
The second way is to run
time python<version> -c pass
which shows CPU and real time to complete running the process. I did
this on a 633 MHz PC running Red Hat Linux 7.3. The Python builds
were standard non-debug builds. I tried with and without the -S
option, which is supposed to suppress loading of site.py and hence
most startup overhead; it didn't exist in Python 1.3 and 1.4.
Results for the first way are pretty inaccurate because it's such a
small number and is only measured in 1/100 of a second, yet revealing.
Some times are printed as two values; I didn't do enough runs to
compute a careful average, so I'm just showing the range:
Version CPU Time CPU Time with -S
1.3 0.00 N/A
1.4 0.00 N/A
1.5.2 0.01 0.00
2.0 0.01-0.02 0.00
2.1 0.01-0.02 0.00
2.2 0.02 0.00
2.3 0.04 0.03-0.04
Now using time:
Version CPU Time CPU Time with -S
1.3 0.004 N/A
1.4 0.004 N/A
1.5 0.018 0.006
2.0 0.021 0.006
2.1 0.018 0.004
2.2 0.025 0.004
2.3 0.045 0.045
Note two things: (a) the start time goes up over time, and (b) for
Python 2.3, -S doesn't make any difference.
Given that we often run very short Python programs, and e.g. Python's
popularity for CGI scripts, I find this increase in startup time very
worrysome, and worthy of our attention (more than gaining nanoseconds
on dict operations or even socket I/O speed).
My goal: I'd like Python 2.3(final) to start up at least as fast as
Python 2.2, and I'd like the much faster startup time back with -S.
I have no time to investigate the cause right now, although I have a
suspicion that the problem might be in loading too much of the
encoding framework at start time (I recall Marc-Andre and Martin
debating this earlier).
--Guido van Rossum (home page: http://www.python.org/~guido/)