summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2005-09-25 18:12:01 (GMT)
committerSteven Knight <knight@baldmt.com>2005-09-25 18:12:01 (GMT)
commit781ba4618da6ab099b213fef0a73960459089558 (patch)
tree8f3f2d46b0ac09fb08f7dc9d9e9729a92fa2e7d0 /bin
parent83d2c54302835180d4f130d75cd69a92b2d7fd9b (diff)
downloadSCons-781ba4618da6ab099b213fef0a73960459089558.zip
SCons-781ba4618da6ab099b213fef0a73960459089558.tar.gz
SCons-781ba4618da6ab099b213fef0a73960459089558.tar.bz2
Optimize is_List et al. Add a script harness and scripts for benchmarking Python code snippets.
Diffstat (limited to 'bin')
-rw-r--r--bin/bench.py129
1 files changed, 0 insertions, 129 deletions
diff --git a/bin/bench.py b/bin/bench.py
deleted file mode 100644
index 7d9e2ba..0000000
--- a/bin/bench.py
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/usr/bin/env python
-#
-# A script for timing snippets of Python code.
-
-import time
-
-Now = time.time
-#Now = time.clock # better on Windows, some UNIX/Linux systems
-
-# How many times each snippet of code will be run by the functions
-# to gather the time (the "inner loop").
-
-Iterations = 10000
-
-# How many times we'll run each function to collect its aggregate time
-# and try to average out timing differences induced by system performance
-# (the "outer loop").
-
-Runs = 10
-
-# The functions containing the code snippets to test and compare.
-# This script will test any function whose name begins with the string
-# "Func" and assumes that they all get passed the same arguments.
-# Each function should put its snippet within a block:
-#
-# for i in IterationList:
-#
-# So that (as much as possible) we're testing just the code itself,
-# not Python function call overhead.
-
-def Func1(var, gvars, lvars):
- for i in IterationList:
- try:
- x = lvars[var]
- except KeyError:
- try:
- x = gvars[var]
- except KeyError:
- x = ''
-
-def Func2(var, gvars, lvars):
- for i in IterationList:
- if lvars.has_key(var):
- x = lvars[var]
- else:
- try:
- x = gvars[var]
- except KeyError:
- x = ''
-
-def Func3(var, gvars, lvars):
- for i in IterationList:
- if lvars.has_key(var):
- x = lvars[var]
- elif gvars.has_key(var):
- x = gvars[var]
- else:
- x = ''
-
-def Func4(var, gvars, lvars):
- for i in IterationList:
- try:
- x = eval(var, gvars, lvars)
- except NameError:
- x = ''
-
-# Data to pass to the functions on each run. Each entry is a
-# three-element tuple:
-#
-# (
-# "Label to print describing this data run",
-# ('positional', 'arguments'),
-# {'keyword' : 'arguments'},
-# ),
-
-Data = [
- (
- "Neither in gvars or lvars",
- ('x', {}, {}),
- {},
- ),
- (
- "Missing from lvars, found in gvars",
- ('x', {'x':1}, {}),
- {},
- ),
- (
- "Found in lvars",
- ('x', {'x':1}, {'x':2}),
- {},
- ),
-]
-
-
-
-IterationList = [None]
-
-def timer(func, *args, **kw):
- global IterationList
- IterationList = [None] * Iterations
- results = []
- for i in range(Runs):
- start = Now()
- func(*args, **kw)
- finish = Now()
- results.append((finish - start) / Iterations)
- return results
-
-def display(label, results):
- print ' ' + label + ':'
- print ' ',
- for r in results:
- print "%.3f" % (r * 1e6),
- print
-
-def display(label, results):
- total = reduce(lambda x, y: x+y, results, 0.0)
- print " %8.3f" % ((total * 1e6) / len(results)), ':', label
-
-func_names = filter(lambda x: x.startswith('Func'), locals().keys())
-func_names.sort()
-
-for f in func_names:
- func = locals()[f]
- print f + ':'
-
- for label, args, kw in Data:
- r = apply(timer, (func,)+args, kw)
- display(label, r)