Add global option --time to track execution

This prints a simple line after a command ends, providing
information about how long it executed for using real wall
clock time. Its mostly useful for looking at sync times.

Change-Id: Ie0997df0a0f90150270835d94b58a01a10bc3956
Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
Shawn O. Pearce 2011-09-22 17:06:41 -07:00
parent 490d09a314
commit 3a0e782790

17
main.py
View File

@ -27,6 +27,7 @@ import optparse
import os import os
import re import re
import sys import sys
import time
import urllib2 import urllib2
from trace import SetTrace from trace import SetTrace
@ -56,6 +57,9 @@ global_options.add_option('--no-pager',
global_options.add_option('--trace', global_options.add_option('--trace',
dest='trace', action='store_true', dest='trace', action='store_true',
help='trace git command execution') help='trace git command execution')
global_options.add_option('--time',
dest='time', action='store_true',
help='time repo command execution')
global_options.add_option('--version', global_options.add_option('--version',
dest='show_version', action='store_true', dest='show_version', action='store_true',
help='display this version of repo') help='display this version of repo')
@ -124,8 +128,21 @@ class _Repo(object):
if use_pager: if use_pager:
RunPager(config) RunPager(config)
try:
start = time.time()
try: try:
cmd.Execute(copts, cargs) cmd.Execute(copts, cargs)
finally:
elapsed = time.time() - start
hours, remainder = divmod(elapsed, 3600)
minutes, seconds = divmod(remainder, 60)
if gopts.time:
if hours == 0:
print >>sys.stderr, 'real\t%dm%.3fs' \
% (minutes, seconds)
else:
print >>sys.stderr, 'real\t%dh%dm%.3fs' \
% (hours, minutes, seconds)
except ManifestInvalidRevisionError, e: except ManifestInvalidRevisionError, e:
print >>sys.stderr, 'error: %s' % str(e) print >>sys.stderr, 'error: %s' % str(e)
sys.exit(1) sys.exit(1)