Wow, Python startup time is worse than I thought. Here’s some data from a fast Ubuntu box. I ran all commands a bunch of times to warm caches.
$ time python2.7 -c 1 real 0m0.015s user 0m0.012s sys 0m0.000s $ time python3.2 -c 1 real 0m0.026s user 0m0.024s sys 0m0.000s $ strace python2.7 -c 1 2>&1 | wc -l 856 $ strace python3.2 -c 1 2>&1 | wc -l 1429 $ echo >| /tmp/empty.py $ time python2.7 -O /tmp/empty.py real 0m0.042s user 0m0.032s sys 0m0.008s $ time python2.7 -O /tmp/empty.py real 0m0.044s user 0m0.032s sys 0m0.008s $ time python2.7 -S empty.py real 0m0.004s user 0m0.004s sys 0m0.000s $ strace python2.7 -S -c 1 2>&1 | wc -l 301
That last one’s a bit of a winner; -S means “don’t load site modules” and comes from this ExpertsExchange discussion. I lose /usr/local/lib; if I manually add that in my script I get my minimal libgit2 program down to 6ms.