Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commands.py @ 249:619e775aa7f9
import and startup cleanups
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
import and startup cleanups
add commands:run()
add copyright notice to commands
eliminate/reorganize imports to speed up start time:
0.5b:
$ time bash -c 'for i in `seq 100`; do ~/bin/hg > /dev/null; done'
real 0m7.718s
user 0m6.719s
sys 0m0.794s
new:
$ time bash -c 'for i in `seq 100`; do hg > /dev/null; done'
real 0m2.171s
user 0m1.684s
sys 0m0.444s
just python:
$ time bash -c 'for i in `seq 100`; do python -c pass; done'
real 0m0.988s
user 0m0.771s
sys 0m0.207s
Ignoring the fixed cost of loading the Python interpreter, we're 5.6
times faster. With the Python load time, we're still 3.5 times faster.
manifest hash: acce5882a55c76eb165316f5741724c8ce4ef587
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCoihAywK+sNU5EO8RAqMdAJwMe6Ur0R9G6jjayNa5hH2C3c4k/gCeIYvc
N178vaWWGciX9zq+g5qCAls=
=buhv
-----END PGP SIGNATURE-----
author | mpm@selenic.com |
---|---|
date | Sat, 04 Jun 2005 14:16:32 -0800 |
parents | b7645b3c86ff |
children | 45ee7c4cae4f |
comparison
equal
deleted
inserted
replaced
248:b7645b3c86ff | 249:619e775aa7f9 |
---|---|
1 import os, re, traceback, sys, signal, time, mdiff | 1 # commands.py - command processing for mercurial |
2 # | |
3 # Copyright 2005 Matt Mackall <mpm@selenic.com> | |
4 # | |
5 # This software may be used and distributed according to the terms | |
6 # of the GNU General Public License, incorporated herein by reference. | |
7 | |
8 import os, re, sys, signal, time, mdiff | |
2 from mercurial import fancyopts, ui, hg | 9 from mercurial import fancyopts, ui, hg |
3 | 10 |
4 class UnknownCommand(Exception): pass | 11 class UnknownCommand(Exception): pass |
5 | 12 |
6 def filterfiles(filters, files): | 13 def filterfiles(filters, files): |
520 class SignalInterrupt(Exception): pass | 527 class SignalInterrupt(Exception): pass |
521 | 528 |
522 def catchterm(*args): | 529 def catchterm(*args): |
523 raise SignalInterrupt | 530 raise SignalInterrupt |
524 | 531 |
532 def run(): | |
533 sys.exit(dispatch(sys.argv[1:])) | |
534 | |
525 def dispatch(args): | 535 def dispatch(args): |
526 options = {} | 536 options = {} |
527 opts = [('v', 'verbose', None, 'verbose'), | 537 opts = [('v', 'verbose', None, 'verbose'), |
528 ('d', 'debug', None, 'debug'), | 538 ('d', 'debug', None, 'debug'), |
529 ('q', 'quiet', None, 'quiet'), | 539 ('q', 'quiet', None, 'quiet'), |
560 except SignalInterrupt: | 570 except SignalInterrupt: |
561 u.warn("killed!\n") | 571 u.warn("killed!\n") |
562 except KeyboardInterrupt: | 572 except KeyboardInterrupt: |
563 u.warn("interrupted!\n") | 573 u.warn("interrupted!\n") |
564 except TypeError, inst: | 574 except TypeError, inst: |
575 import traceback | |
565 # was this an argument error? | 576 # was this an argument error? |
566 tb = traceback.extract_tb(sys.exc_info()[2]) | 577 tb = traceback.extract_tb(sys.exc_info()[2]) |
567 if len(tb) > 2: # no | 578 if len(tb) > 2: # no |
568 raise | 579 raise |
569 u.warn("%s: invalid arguments\n" % i[0].__name__) | 580 u.warn("%s: invalid arguments\n" % i[0].__name__) |