diff options
Diffstat (limited to 'src/zope/tal/timer.py')
-rw-r--r-- | src/zope/tal/timer.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/zope/tal/timer.py b/src/zope/tal/timer.py new file mode 100644 index 0000000..916a2e2 --- /dev/null +++ b/src/zope/tal/timer.py @@ -0,0 +1,58 @@ +#! /usr/bin/env python +############################################################################## +# +# Copyright (c) 2001, 2002 Zope Corporation and Contributors. +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# +############################################################################## +"""Helper program to time compilation and interpretation + +$Id$ +""" +import getopt +import sys +import time + +from cStringIO import StringIO + +from zope.tal.driver import FILE, compilefile, interpretit + + +def main(): + count = 10 + try: + opts, args = getopt.getopt(sys.argv[1:], "n:") + except getopt.error, msg: + print msg + sys.exit(2) + for o, a in opts: + if o == "-n": + count = int(a) + if not args: + args = [FILE] + for file in args: + print file + dummyfile = StringIO() + it = timefunc(count, compilefile, file) + timefunc(count, interpretit, it, None, dummyfile) + +def timefunc(count, func, *args): + sys.stderr.write("%-14s: " % func.__name__) + sys.stderr.flush() + t0 = time.clock() + for i in range(count): + result = apply(func, args) + t1 = time.clock() + sys.stderr.write("%6.3f secs for %d calls, i.e. %4.0f msecs per call\n" + % ((t1-t0), count, 1000*(t1-t0)/count)) + return result + +if __name__ == "__main__": + main() |