summaryrefslogtreecommitdiff
path: root/src/zope/tal/timer.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/zope/tal/timer.py')
-rw-r--r--src/zope/tal/timer.py58
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()