summaryrefslogtreecommitdiffstats
path: root/Tools
diff options
context:
space:
mode:
Diffstat (limited to 'Tools')
-rw-r--r--Tools/pybench/Arithmetic.py10
-rw-r--r--Tools/pybench/Calls.py8
-rw-r--r--Tools/pybench/Constructs.py6
-rw-r--r--Tools/pybench/Dict.py10
-rwxr-xr-xTools/pybench/Empty.py23
-rw-r--r--Tools/pybench/Exceptions.py4
-rw-r--r--Tools/pybench/Imports.py6
-rw-r--r--Tools/pybench/Instances.py2
-rw-r--r--Tools/pybench/Lists.py6
-rw-r--r--Tools/pybench/Lookups.py10
-rwxr-xr-xTools/pybench/NewInstances.py66
-rw-r--r--Tools/pybench/Numbers.py8
-rw-r--r--Tools/pybench/Setup.py5
-rw-r--r--Tools/pybench/Strings.py14
-rw-r--r--Tools/pybench/Tuples.py4
-rw-r--r--Tools/pybench/Unicode.py14
-rwxr-xr-xTools/pybench/pybench.py170
17 files changed, 255 insertions, 111 deletions
diff --git a/Tools/pybench/Arithmetic.py b/Tools/pybench/Arithmetic.py
index 4ed6219..229396c 100644
--- a/Tools/pybench/Arithmetic.py
+++ b/Tools/pybench/Arithmetic.py
@@ -4,7 +4,7 @@ class SimpleIntegerArithmetic(Test):
version = 0.3
operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
- rounds = 120000
+ rounds = 1200*21
def test(self):
@@ -159,7 +159,7 @@ class SimpleFloatArithmetic(Test):
version = 0.3
operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
- rounds = 100000
+ rounds = 1000*30
def test(self):
@@ -314,7 +314,7 @@ class SimpleIntFloatArithmetic(Test):
version = 0.3
operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
- rounds = 120000
+ rounds = 1200*30
def test(self):
@@ -470,7 +470,7 @@ class SimpleLongArithmetic(Test):
version = 0.3
operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
- rounds = 30000
+ rounds = 300*32
def test(self):
@@ -625,7 +625,7 @@ class SimpleComplexArithmetic(Test):
version = 0.3
operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
- rounds = 40000
+ rounds = 400*27
def test(self):
diff --git a/Tools/pybench/Calls.py b/Tools/pybench/Calls.py
index e295243..a94887b 100644
--- a/Tools/pybench/Calls.py
+++ b/Tools/pybench/Calls.py
@@ -4,7 +4,7 @@ class PythonFunctionCalls(Test):
version = 0.3
operations = 5*(1+4+4+2)
- rounds = 60000
+ rounds = 600*22
def test(self):
@@ -113,7 +113,7 @@ class BuiltinFunctionCalls(Test):
version = 0.4
operations = 5*(2+5+5+5)
- rounds = 30000
+ rounds = 300*24
def test(self):
@@ -234,7 +234,7 @@ class PythonMethodCalls(Test):
version = 0.3
operations = 5*(6 + 5 + 4)
- rounds = 20000
+ rounds = 200*27
def test(self):
@@ -376,7 +376,7 @@ class Recursion(Test):
version = 0.3
operations = 5
- rounds = 50000
+ rounds = 500*21
def test(self):
diff --git a/Tools/pybench/Constructs.py b/Tools/pybench/Constructs.py
index 00045bd..f7ebe73 100644
--- a/Tools/pybench/Constructs.py
+++ b/Tools/pybench/Constructs.py
@@ -4,7 +4,7 @@ class IfThenElse(Test):
version = 0.31
operations = 30*3 # hard to say...
- rounds = 150000
+ rounds = 1500*27
def test(self):
@@ -471,7 +471,7 @@ class NestedForLoops(Test):
version = 0.3
operations = 1000*10*5
- rounds = 150
+ rounds = 100
def test(self):
@@ -496,7 +496,7 @@ class ForLoops(Test):
version = 0.1
operations = 5 * 5
- rounds = 8000
+ rounds = 80*25
def test(self):
diff --git a/Tools/pybench/Dict.py b/Tools/pybench/Dict.py
index 54aeae7..d1b3833 100644
--- a/Tools/pybench/Dict.py
+++ b/Tools/pybench/Dict.py
@@ -4,7 +4,7 @@ class DictCreation(Test):
version = 0.3
operations = 5*(5 + 5)
- rounds = 60000
+ rounds = 600*24
def test(self):
@@ -79,7 +79,7 @@ class DictWithStringKeys(Test):
version = 0.1
operations = 5*(6 + 6)
- rounds = 200000
+ rounds = 2000*30
def test(self):
@@ -168,7 +168,7 @@ class DictWithFloatKeys(Test):
version = 0.1
operations = 5*(6 + 6)
- rounds = 200000
+ rounds = 20000
def test(self):
@@ -257,7 +257,7 @@ class DictWithIntegerKeys(Test):
version = 0.1
operations = 5*(6 + 6)
- rounds = 200000
+ rounds = 2000*19
def test(self):
@@ -346,7 +346,7 @@ class SimpleDictManipulation(Test):
version = 0.3
operations = 5*(6 + 6 + 6 + 6)
- rounds = 50000
+ rounds = 500*44
def test(self):
diff --git a/Tools/pybench/Empty.py b/Tools/pybench/Empty.py
new file mode 100755
index 0000000..3c54851
--- /dev/null
+++ b/Tools/pybench/Empty.py
@@ -0,0 +1,23 @@
+from pybench import Test
+
+class EmptyTest(Test):
+ """This is just here as a potential measure of repeatability."""
+
+ version = 0.3
+ operations = 1
+ rounds = 60000
+
+ def test(self):
+
+ l = []
+ for i in xrange(self.rounds):
+ pass
+
+
+ def calibrate(self):
+
+ l = []
+
+ for i in xrange(self.rounds):
+ pass
+
diff --git a/Tools/pybench/Exceptions.py b/Tools/pybench/Exceptions.py
index 7e55708..d6c8941 100644
--- a/Tools/pybench/Exceptions.py
+++ b/Tools/pybench/Exceptions.py
@@ -4,7 +4,7 @@ class TryRaiseExcept(Test):
version = 0.1
operations = 2 + 3
- rounds = 60000
+ rounds = 600*25
def test(self):
@@ -44,7 +44,7 @@ class TryExcept(Test):
version = 0.1
operations = 15 * 10
- rounds = 200000
+ rounds = 2000*16
def test(self):
diff --git a/Tools/pybench/Imports.py b/Tools/pybench/Imports.py
index 85eb604..b953919 100644
--- a/Tools/pybench/Imports.py
+++ b/Tools/pybench/Imports.py
@@ -8,7 +8,7 @@ class SecondImport(Test):
version = 0.1
operations = 5 * 5
- rounds = 20000
+ rounds = 2000*15
def test(self):
@@ -53,7 +53,7 @@ class SecondPackageImport(Test):
version = 0.1
operations = 5 * 5
- rounds = 20000
+ rounds = 200*20
def test(self):
@@ -97,7 +97,7 @@ class SecondSubmoduleImport(Test):
version = 0.1
operations = 5 * 5
- rounds = 20000
+ rounds = 200*17
def test(self):
diff --git a/Tools/pybench/Instances.py b/Tools/pybench/Instances.py
index 9b1929d..199b129 100644
--- a/Tools/pybench/Instances.py
+++ b/Tools/pybench/Instances.py
@@ -4,7 +4,7 @@ class CreateInstances(Test):
version = 0.2
operations = 3 + 7 + 4
- rounds = 60000
+ rounds = 600*17
def test(self):
diff --git a/Tools/pybench/Lists.py b/Tools/pybench/Lists.py
index 4c18e99..844612f 100644
--- a/Tools/pybench/Lists.py
+++ b/Tools/pybench/Lists.py
@@ -4,7 +4,7 @@ class SimpleListManipulation(Test):
version = 0.3
operations = 5* (6 + 6 + 6)
- rounds = 60000
+ rounds = 600*45
def test(self):
@@ -132,7 +132,7 @@ class ListSlicing(Test):
version = 0.4
operations = 25*(3+1+2+1)
- rounds = 400
+ rounds = 4*45
def test(self):
@@ -169,7 +169,7 @@ class SmallLists(Test):
version = 0.3
operations = 5*(1+ 6 + 6 + 3 + 1)
- rounds = 60000
+ rounds = 600*15
def test(self):
diff --git a/Tools/pybench/Lookups.py b/Tools/pybench/Lookups.py
index e5529cd..47ad94a 100644
--- a/Tools/pybench/Lookups.py
+++ b/Tools/pybench/Lookups.py
@@ -4,7 +4,7 @@ class SpecialClassAttribute(Test):
version = 0.3
operations = 5*(12 + 12)
- rounds = 100000
+ rounds = 1000*16
def test(self):
@@ -185,7 +185,7 @@ class NormalClassAttribute(Test):
version = 0.3
operations = 5*(12 + 12)
- rounds = 100000
+ rounds = 1000*20
def test(self):
@@ -371,7 +371,7 @@ class SpecialInstanceAttribute(Test):
version = 0.3
operations = 5*(12 + 12)
- rounds = 100000
+ rounds = 1000*14
def test(self):
@@ -559,7 +559,7 @@ class NormalInstanceAttribute(Test):
version = 0.3
operations = 5*(12 + 12)
- rounds = 100000
+ rounds = 1000*22
def test(self):
@@ -747,7 +747,7 @@ class BuiltinMethodLookup(Test):
version = 0.3
operations = 5*(3*5 + 3*5)
- rounds = 70000
+ rounds = 700*15
def test(self):
diff --git a/Tools/pybench/NewInstances.py b/Tools/pybench/NewInstances.py
new file mode 100755
index 0000000..a352638
--- /dev/null
+++ b/Tools/pybench/NewInstances.py
@@ -0,0 +1,66 @@
+from pybench import Test
+
+class CreateNewInstances(Test):
+
+ version = 0.1
+ operations = 3 + 7 + 4
+ rounds = 60000
+
+ def test(self):
+
+ class c(object):
+ pass
+
+ class d(object):
+ def __init__(self,a,b,c):
+ self.a = a
+ self.b = b
+ self.c = c
+
+ class e(object):
+ def __init__(self,a,b,c=4):
+ self.a = a
+ self.b = b
+ self.c = c
+ self.d = a
+ self.e = b
+ self.f = c
+
+ for i in xrange(self.rounds):
+ o = c()
+ o1 = c()
+ o2 = c()
+ p = d(i,i,3)
+ p1 = d(i,i,3)
+ p2 = d(i,3,3)
+ p3 = d(3,i,3)
+ p4 = d(i,i,i)
+ p5 = d(3,i,3)
+ p6 = d(i,i,i)
+ q = e(i,i,3)
+ q1 = e(i,i,3)
+ q2 = e(i,i,3)
+ q3 = e(i,i)
+
+ def calibrate(self):
+
+ class c(object):
+ pass
+
+ class d(object):
+ def __init__(self,a,b,c):
+ self.a = a
+ self.b = b
+ self.c = c
+
+ class e(object):
+ def __init__(self,a,b,c=4):
+ self.a = a
+ self.b = b
+ self.c = c
+ self.d = a
+ self.e = b
+ self.f = c
+
+ for i in xrange(self.rounds):
+ pass
diff --git a/Tools/pybench/Numbers.py b/Tools/pybench/Numbers.py
index a6aea33..e89d00f 100644
--- a/Tools/pybench/Numbers.py
+++ b/Tools/pybench/Numbers.py
@@ -4,7 +4,7 @@ class CompareIntegers(Test):
version = 0.1
operations = 30 * 5
- rounds = 120000
+ rounds = 1200*21
def test(self):
@@ -200,7 +200,7 @@ class CompareFloats(Test):
version = 0.1
operations = 30 * 5
- rounds = 60000
+ rounds = 600*27
def test(self):
@@ -396,7 +396,7 @@ class CompareFloatsIntegers(Test):
version = 0.1
operations = 30 * 5
- rounds = 60000
+ rounds = 600*16
def test(self):
@@ -592,7 +592,7 @@ class CompareLongs(Test):
version = 0.1
operations = 30 * 5
- rounds = 60000
+ rounds = 600*24
def test(self):
diff --git a/Tools/pybench/Setup.py b/Tools/pybench/Setup.py
index 906a2a9..1f2f454 100644
--- a/Tools/pybench/Setup.py
+++ b/Tools/pybench/Setup.py
@@ -17,11 +17,16 @@ Number_of_rounds = 10
Warp_factor = 20
# Import tests
+#from Empty import *
from Arithmetic import *
from Calls import *
from Constructs import *
from Lookups import *
from Instances import *
+try:
+ from NewInstances import *
+except:
+ print "Cannot test new-style objects"
from Lists import *
from Tuples import *
from Dict import *
diff --git a/Tools/pybench/Strings.py b/Tools/pybench/Strings.py
index b01843a..43309da 100644
--- a/Tools/pybench/Strings.py
+++ b/Tools/pybench/Strings.py
@@ -5,7 +5,7 @@ class ConcatStrings(Test):
version = 0.1
operations = 10 * 5
- rounds = 60000
+ rounds = 6000
def test(self):
@@ -87,7 +87,7 @@ class CompareStrings(Test):
version = 0.2
operations = 10 * 5
- rounds = 200000
+ rounds = 2000*22
def test(self):
@@ -169,7 +169,7 @@ class CompareInternedStrings(Test):
version = 0.1
operations = 10 * 5
- rounds = 200000
+ rounds = 2000*28
def test(self):
@@ -251,7 +251,7 @@ class CreateStringsWithConcat(Test):
version = 0.1
operations = 10 * 5
- rounds = 80000
+ rounds = 800*32
def test(self):
@@ -326,7 +326,7 @@ class StringSlicing(Test):
version = 0.1
operations = 5 * 7
- rounds = 100000
+ rounds = 1000*15
def test(self):
@@ -389,7 +389,7 @@ if hasattr('', 'lower'):
version = 0.1
operations = 3 * (5 + 4 + 2 + 1)
- rounds = 70000
+ rounds = 14000
def test(self):
@@ -462,7 +462,7 @@ if hasattr('', 'lower'):
version = 0.1
operations = 10 * 7
- rounds = 80000
+ rounds = 800*24
def test(self):
diff --git a/Tools/pybench/Tuples.py b/Tools/pybench/Tuples.py
index e84ea53..842fa3e 100644
--- a/Tools/pybench/Tuples.py
+++ b/Tools/pybench/Tuples.py
@@ -4,7 +4,7 @@ class TupleSlicing(Test):
version = 0.31
operations = 3 * 25 * 10 * 7
- rounds = 400
+ rounds = 100
def test(self):
@@ -272,7 +272,7 @@ class SmallTuples(Test):
version = 0.3
operations = 5*(1 + 3 + 6 + 2)
- rounds = 80000
+ rounds = 800*16
def test(self):
diff --git a/Tools/pybench/Unicode.py b/Tools/pybench/Unicode.py
index 366f171..86839b5 100644
--- a/Tools/pybench/Unicode.py
+++ b/Tools/pybench/Unicode.py
@@ -10,7 +10,7 @@ class ConcatUnicode(Test):
version = 0.1
operations = 10 * 5
- rounds = 60000
+ rounds = 600*7
def test(self):
@@ -92,7 +92,7 @@ class CompareUnicode(Test):
version = 0.1
operations = 10 * 5
- rounds = 150000
+ rounds = 1500*17
def test(self):
@@ -174,7 +174,7 @@ class CreateUnicodeWithConcat(Test):
version = 0.1
operations = 10 * 5
- rounds = 80000
+ rounds = 800*12
def test(self):
@@ -249,7 +249,7 @@ class UnicodeSlicing(Test):
version = 0.1
operations = 5 * 7
- rounds = 100000
+ rounds = 10000
def test(self):
@@ -310,7 +310,7 @@ class UnicodeMappings(Test):
version = 0.1
operations = 3 * (5 + 4 + 2 + 1)
- rounds = 10000
+ rounds = 100*15
def test(self):
@@ -383,7 +383,7 @@ class UnicodePredicates(Test):
version = 0.1
operations = 5 * 9
- rounds = 100000
+ rounds = 1000*25
def test(self):
@@ -460,7 +460,7 @@ else:
version = 0.1
operations = 5 * 8
- rounds = 100000
+ rounds = 1000*15
def test(self):
diff --git a/Tools/pybench/pybench.py b/Tools/pybench/pybench.py
index b20c3f3..f190d77 100755
--- a/Tools/pybench/pybench.py
+++ b/Tools/pybench/pybench.py
@@ -35,7 +35,7 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE !
"""
# Version number
-__version__ = '1.3'
+__version__ = '1.4'
#
# NOTE: Use xrange for all test loops unless you want to face
@@ -98,7 +98,7 @@ class Test:
# Number of rounds to execute per test run. This should be
# adjusted to a figure that results in a test run-time of between
# 20-50 seconds.
- rounds = 100000
+ rounds = 10000
### Internal variables
@@ -115,6 +115,8 @@ class Test:
if warp > 1:
self.rounds = self.rounds / warp
+ if self.rounds == 0:
+ self.rounds = 1
self.warp = warp
self.times = []
self.overhead = []
@@ -137,12 +139,13 @@ class Test:
cruns = self.cruns
# first calibrate
offset = 0.0
- for i in range(cruns):
- t = clock()
- calibrate()
- t = clock() - t
- offset = offset + t
- offset = offset / cruns
+ if cruns:
+ for i in range(cruns):
+ t = clock()
+ calibrate()
+ t = clock() - t
+ offset = offset + t
+ offset = offset / cruns
# now the real thing
t = clock()
test()
@@ -175,13 +178,18 @@ class Test:
def stat(self):
- """ Returns two value: average time per run and average per
- operation.
+ """ Returns four values:
+ minimum round time
+ average time per round
+ average time per operation
+ average overhead time
+ XXX Should this take warp factors into account?
"""
runs = len(self.times)
if runs == 0:
return 0,0
+ mintime = min(self.times)
totaltime = reduce(operator.add,self.times,0.0)
avg = totaltime / float(runs)
op_avg = totaltime / float(runs * self.rounds * self.operations)
@@ -191,7 +199,7 @@ class Test:
else:
# use self.last_timing - not too accurate
ov_avg = self.last_timing[2]
- return avg,op_avg,ov_avg
+ return mintime, avg, op_avg, ov_avg
### Load Setup
@@ -210,105 +218,132 @@ class Benchmark:
roundtime = 0 # Average round time
version = None # Benchmark version number (see __init__)
# as float x.yy
- starttime = None # Benchmark start time
def __init__(self):
self.tests = {}
self.version = 0.31
- def load_tests(self,setupmod,warp=1):
+ def load_tests(self, setupmod, warp=1, limitnames="", verbose=0):
self.warp = warp
+ if limitnames:
+ limitnames = re.compile(limitnames, re.I)
+ else:
+ limitnames = None
tests = self.tests
- print 'Searching for tests...'
+ if verbose:
+ print 'Searching for tests ...',
setupmod.__dict__.values()
for c in setupmod.__dict__.values():
- if hasattr(c,'is_a_test') and c.__name__ != 'Test':
- tests[c.__name__] = c(warp)
+ if not hasattr(c,'is_a_test'):
+ continue
+ name = c.__name__
+ if name == 'Test':
+ continue
+ if limitnames is not None and limitnames.search(name) is None:
+ continue
+ tests[name] = c(warp)
l = tests.keys()
l.sort()
- for t in l:
- print ' ',t
+ if verbose:
+ print
+ for t in l:
+ print ' ', t
+ print len(l), "tests found"
print
- def run(self):
+ def run(self, verbose):
tests = self.tests.items()
tests.sort()
clock = time.clock
- print 'Running %i round(s) of the suite: ' % self.rounds
+ print 'Running %i round(s) of the suite at warp factor %i:' % (self.rounds, self.warp)
print
- self.starttime = time.time()
roundtime = clock()
for i in range(self.rounds):
- print ' Round %-25i real abs overhead' % (i+1)
+ roundstarttime = clock()
+ if verbose:
+ print ' Round %-25i real abs overhead' % (i+1)
for j in range(len(tests)):
name,t = tests[j]
- print '%30s:' % name,
+ if verbose:
+ print '%30s:' % name,
t.run()
- print ' %.3fr %.3fa %.3fo' % t.last_timing
- print ' ----------------------'
- print ' Average round time: %.3f seconds' % \
- ((clock() - roundtime)/(i+1))
- print
+ if verbose:
+ print ' %.3fr %.3fa %.3fo' % t.last_timing
+ if verbose:
+ print ' ----------------------'
+ print ' Average round time: %.3f seconds' % \
+ ((clock() - roundtime)/(i+1))
+ print
+ else:
+ print '%d done in %.3f seconds' % (i+1, (clock() - roundstarttime))
self.roundtime = (clock() - roundtime) / self.rounds
print
def print_stat(self, compare_to=None, hidenoise=0):
if not compare_to:
- print '%-30s per run per oper. overhead' % 'Tests:'
- print '-'*72
+ print '%-30s min run avg run per oprn overhead' % 'Tests:'
+ print '-'*77
tests = self.tests.items()
tests.sort()
+ totalmintime = 0
for name,t in tests:
- avg,op_avg,ov_avg = t.stat()
- print '%30s: %10.2f ms %7.2f us %7.2f ms' % \
- (name,avg*1000.0,op_avg*1000000.0,ov_avg*1000.0)
- print '-'*72
- print '%30s: %10.2f ms' % \
- ('Average round time',self.roundtime * 1000.0)
+ mintime,avg,op_avg,ov_avg = t.stat()
+ totalmintime += mintime
+ print '%30s: %9.2f ms %9.2f ms %6.2f us %6.2f' % \
+ (name,mintime*1000.0,avg*1000.0,op_avg*1000000.0,ov_avg*1000.0)
+ print '-'*77
+ print '%30s: %9.2f ms' % \
+ ('Notional minimum round time', totalmintime * 1000.0)
else:
- print '%-30s per run per oper. diff *)' % \
+ print 'Comparing with: %s (rounds=%i, warp=%i)' % \
+ (compare_to.name,compare_to.rounds,compare_to.warp)
+ print '%-30s min run cmp run avg run diff' % \
'Tests:'
- print '-'*72
+ print '-'*77
tests = self.tests.items()
tests.sort()
compatible = 1
- for name,t in tests:
- avg,op_avg,ov_avg = t.stat()
+ totalmintime = other_totalmintime = 0
+ for name, t in tests:
+ mintime, avg, op_avg, ov_avg = t.stat()
+ totalmintime += mintime
try:
other = compare_to.tests[name]
except KeyError:
other = None
if other and other.version == t.version and \
other.operations == t.operations:
- avg1,op_avg1,ov_avg1 = other.stat()
- qop_avg = (op_avg/op_avg1-1.0)*100.0
+ mintime1, avg1, op_avg1, ov_avg1 = other.stat()
+ other_totalmintime += mintime1
+ diff = ((mintime*self.warp)/(mintime1*other.warp) - 1.0)*100.0
if hidenoise and abs(qop_avg) < 10:
- qop_avg = ''
+ diff = ''
else:
- qop_avg = '%+7.2f%%' % qop_avg
+ diff = '%+7.2f%%' % diff
else:
- qavg,qop_avg = 'n/a', 'n/a'
+ qavg, diff = 'n/a', 'n/a'
compatible = 0
- print '%30s: %10.2f ms %7.2f us %8s' % \
- (name,avg*1000.0,op_avg*1000000.0,qop_avg)
- print '-'*72
+ print '%30s: %8.2f ms %8.2f ms %8.2f ms %8s' % \
+ (name,mintime*1000.0,mintime1*1000.0 * compare_to.warp/self.warp, avg*1000.0,diff)
+ print '-'*77
+ #
+ # Summarise test results
+ #
if compatible and compare_to.roundtime > 0 and \
compare_to.version == self.version:
- print '%30s: %10.2f ms %+7.2f%%' % \
- ('Average round time',self.roundtime * 1000.0,
- ((self.roundtime*self.warp)/
- (compare_to.roundtime*compare_to.warp)-1.0)*100.0)
+ print '%30s: %8.2f ms %8.2f ms %+7.2f%%' % \
+ ('Notional minimum round time', totalmintime * 1000.0,
+ other_totalmintime * 1000.0 * compare_to.warp/self.warp,
+ ((totalmintime*self.warp)/
+ (other_totalmintime*compare_to.warp)-1.0)*100.0)
else:
- print '%30s: %10.2f ms n/a' % \
- ('Average round time',self.roundtime * 1000.0)
- print
- print '*) measured against: %s (rounds=%i, warp=%i)' % \
- (compare_to.name,compare_to.rounds,compare_to.warp)
+ print '%30s: %9.2f ms n/a' % \
+ ('Notional minimum round time', totalmintime * 1000.0)
print
def print_machine():
@@ -339,7 +374,12 @@ class PyBenchCmdline(Application):
SwitchOption('-S','show statistics of benchmarks',0),
ArgumentOption('-w','set warp factor to arg',Setup.Warp_factor),
SwitchOption('-d','hide noise in compares', 0),
+ SwitchOption('-v','verbose output (not recommended)', 0),
SwitchOption('--no-gc','disable garbage collection', 0),
+ SwitchOption('--no-syscheck',
+ '"disable" sys check interval (set to sys.maxint)', 0),
+ ArgumentOption('-t', 'tests containing substring', ''),
+ ArgumentOption('-C', 'number of calibration runs (default 0)', '')
]
about = """\
@@ -380,6 +420,11 @@ python pybench.py -s p15 -c p14
hidenoise = self.values['-d']
warp = self.values['-w']
nogc = self.values['--no-gc']
+ limitnames = self.values['-t']
+ verbose = self.verbose
+ nosyscheck = self.values['--no-syscheck']
+
+ print 'PYBENCH',__version__
# Switch off GC
if nogc:
@@ -390,8 +435,13 @@ python pybench.py -s p15 -c p14
else:
if self.values['--no-gc']:
gc.disable()
+ print 'NO GC'
+
+ # maximise sys check interval
+ if nosyscheck:
+ sys.setcheckinterval(sys.maxint)
+ print 'CHECKINTERVAL =', sys.maxint
- print 'PYBENCH',__version__
print
if not compare_to:
@@ -436,9 +486,9 @@ python pybench.py -s p15 -c p14
# Create benchmark object
bench = Benchmark()
bench.rounds = rounds
- bench.load_tests(Setup,warp)
+ bench.load_tests(Setup, warp, limitnames, verbose)
try:
- bench.run()
+ bench.run(verbose)
except KeyboardInterrupt:
print
print '*** KeyboardInterrupt -- Aborting'