[Python-checkins] r46334 - sandbox/trunk/rjsh-pybench/Arithmetic.py sandbox/trunk/rjsh-pybench/Calls.py sandbox/trunk/rjsh-pybench/Constructs.py sandbox/trunk/rjsh-pybench/Dict.py sandbox/trunk/rjsh-pybench/Empty.py sandbox/trunk/rjsh-pybench/Exceptions.py sandbox/trunk/rjsh-pybench/Imports.py sandbox/trunk/rjsh-pybench/Instances.py sandbox/trunk/rjsh-pybench/Lists.py sandbox/trunk/rjsh-pybench/Lookups.py sandbox/trunk/rjsh-pybench/Numbers.py sandbox/trunk/rjsh-pybench/Strings.py sandbox/trunk/rjsh-pybench/Tuples.py sandbox/trunk/rjsh-pybench/Unicode.py sandbox/trunk/rjsh-pybench/pybench.py
steve.holden
python-checkins at python.org
Fri May 26 16:24:53 CEST 2006
Author: steve.holden
Date: Fri May 26 16:24:51 2006
New Revision: 46334
Added:
sandbox/trunk/rjsh-pybench/Empty.py (contents, props changed)
Modified:
sandbox/trunk/rjsh-pybench/Arithmetic.py
sandbox/trunk/rjsh-pybench/Calls.py
sandbox/trunk/rjsh-pybench/Constructs.py
sandbox/trunk/rjsh-pybench/Dict.py
sandbox/trunk/rjsh-pybench/Exceptions.py
sandbox/trunk/rjsh-pybench/Imports.py
sandbox/trunk/rjsh-pybench/Instances.py
sandbox/trunk/rjsh-pybench/Lists.py
sandbox/trunk/rjsh-pybench/Lookups.py
sandbox/trunk/rjsh-pybench/Numbers.py
sandbox/trunk/rjsh-pybench/Strings.py
sandbox/trunk/rjsh-pybench/Tuples.py
sandbox/trunk/rjsh-pybench/Unicode.py
sandbox/trunk/rjsh-pybench/pybench.py
Log:
Adjust rounds count to make test take roughly euqal time.
Allow comparisons between runs with different warp factors.
Add an empty test (even though it doesn't tell us much).
Modified: sandbox/trunk/rjsh-pybench/Arithmetic.py
==============================================================================
--- sandbox/trunk/rjsh-pybench/Arithmetic.py (original)
+++ sandbox/trunk/rjsh-pybench/Arithmetic.py Fri May 26 16:24:51 2006
@@ -4,7 +4,7 @@
version = 0.3
operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
- rounds = 120000
+ rounds = 12000*21
def test(self):
@@ -159,7 +159,7 @@
version = 0.3
operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
- rounds = 100000
+ rounds = 10000*30
def test(self):
@@ -314,7 +314,7 @@
version = 0.3
operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
- rounds = 120000
+ rounds = 12000*30
def test(self):
@@ -470,7 +470,7 @@
version = 0.3
operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
- rounds = 30000
+ rounds = 3000*32
def test(self):
@@ -625,7 +625,7 @@
version = 0.3
operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
- rounds = 40000
+ rounds = 4000*27
def test(self):
Modified: sandbox/trunk/rjsh-pybench/Calls.py
==============================================================================
--- sandbox/trunk/rjsh-pybench/Calls.py (original)
+++ sandbox/trunk/rjsh-pybench/Calls.py Fri May 26 16:24:51 2006
@@ -4,7 +4,7 @@
version = 0.3
operations = 5*(1+4+4+2)
- rounds = 60000
+ rounds = 6000*22
def test(self):
@@ -113,7 +113,7 @@
version = 0.4
operations = 5*(2+5+5+5)
- rounds = 30000
+ rounds = 3000*24
def test(self):
@@ -234,7 +234,7 @@
version = 0.3
operations = 5*(6 + 5 + 4)
- rounds = 20000
+ rounds = 2000*27
def test(self):
@@ -376,7 +376,7 @@
version = 0.3
operations = 5
- rounds = 50000
+ rounds = 5000*21
def test(self):
Modified: sandbox/trunk/rjsh-pybench/Constructs.py
==============================================================================
--- sandbox/trunk/rjsh-pybench/Constructs.py (original)
+++ sandbox/trunk/rjsh-pybench/Constructs.py Fri May 26 16:24:51 2006
@@ -4,7 +4,7 @@
version = 0.31
operations = 30*3 # hard to say...
- rounds = 150000
+ rounds = 15000*27
def test(self):
@@ -471,7 +471,7 @@
version = 0.3
operations = 1000*10*5
- rounds = 150
+ rounds = 540
def test(self):
@@ -496,7 +496,7 @@
version = 0.1
operations = 5 * 5
- rounds = 8000
+ rounds = 800*25
def test(self):
Modified: sandbox/trunk/rjsh-pybench/Dict.py
==============================================================================
--- sandbox/trunk/rjsh-pybench/Dict.py (original)
+++ sandbox/trunk/rjsh-pybench/Dict.py Fri May 26 16:24:51 2006
@@ -4,7 +4,7 @@
version = 0.3
operations = 5*(5 + 5)
- rounds = 60000
+ rounds = 6000*24
def test(self):
@@ -79,7 +79,7 @@
version = 0.1
operations = 5*(6 + 6)
- rounds = 200000
+ rounds = 20000*30
def test(self):
@@ -257,7 +257,7 @@
version = 0.1
operations = 5*(6 + 6)
- rounds = 200000
+ rounds = 20000*19
def test(self):
@@ -346,7 +346,7 @@
version = 0.3
operations = 5*(6 + 6 + 6 + 6)
- rounds = 50000
+ rounds = 5000*44
def test(self):
Added: sandbox/trunk/rjsh-pybench/Empty.py
==============================================================================
--- (empty file)
+++ sandbox/trunk/rjsh-pybench/Empty.py Fri May 26 16:24:51 2006
@@ -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
+
Modified: sandbox/trunk/rjsh-pybench/Exceptions.py
==============================================================================
--- sandbox/trunk/rjsh-pybench/Exceptions.py (original)
+++ sandbox/trunk/rjsh-pybench/Exceptions.py Fri May 26 16:24:51 2006
@@ -4,7 +4,7 @@
version = 0.1
operations = 2 + 3
- rounds = 60000
+ rounds = 6000*25
def test(self):
@@ -44,7 +44,7 @@
version = 0.1
operations = 15 * 10
- rounds = 200000
+ rounds = 20000*16
def test(self):
Modified: sandbox/trunk/rjsh-pybench/Imports.py
==============================================================================
--- sandbox/trunk/rjsh-pybench/Imports.py (original)
+++ sandbox/trunk/rjsh-pybench/Imports.py Fri May 26 16:24:51 2006
@@ -8,7 +8,7 @@
version = 0.1
operations = 5 * 5
- rounds = 20000
+ rounds = 2000*15
def test(self):
@@ -53,7 +53,7 @@
version = 0.1
operations = 5 * 5
- rounds = 20000
+ rounds = 2000*20
def test(self):
@@ -97,7 +97,7 @@
version = 0.1
operations = 5 * 5
- rounds = 20000
+ rounds = 2000*17
def test(self):
Modified: sandbox/trunk/rjsh-pybench/Instances.py
==============================================================================
--- sandbox/trunk/rjsh-pybench/Instances.py (original)
+++ sandbox/trunk/rjsh-pybench/Instances.py Fri May 26 16:24:51 2006
@@ -4,7 +4,7 @@
version = 0.2
operations = 3 + 7 + 4
- rounds = 60000
+ rounds = 6000*17
def test(self):
Modified: sandbox/trunk/rjsh-pybench/Lists.py
==============================================================================
--- sandbox/trunk/rjsh-pybench/Lists.py (original)
+++ sandbox/trunk/rjsh-pybench/Lists.py Fri May 26 16:24:51 2006
@@ -4,7 +4,7 @@
version = 0.3
operations = 5* (6 + 6 + 6)
- rounds = 60000
+ rounds = 6000*45
def test(self):
@@ -132,7 +132,7 @@
version = 0.4
operations = 25*(3+1+2+1)
- rounds = 400
+ rounds = 40*45
def test(self):
@@ -169,7 +169,7 @@
version = 0.3
operations = 5*(1+ 6 + 6 + 3 + 1)
- rounds = 60000
+ rounds = 6000*15
def test(self):
Modified: sandbox/trunk/rjsh-pybench/Lookups.py
==============================================================================
--- sandbox/trunk/rjsh-pybench/Lookups.py (original)
+++ sandbox/trunk/rjsh-pybench/Lookups.py Fri May 26 16:24:51 2006
@@ -4,7 +4,7 @@
version = 0.3
operations = 5*(12 + 12)
- rounds = 100000
+ rounds = 10000*16
def test(self):
@@ -185,7 +185,7 @@
version = 0.3
operations = 5*(12 + 12)
- rounds = 100000
+ rounds = 10000*20
def test(self):
@@ -371,7 +371,7 @@
version = 0.3
operations = 5*(12 + 12)
- rounds = 100000
+ rounds = 10000*14
def test(self):
@@ -559,7 +559,7 @@
version = 0.3
operations = 5*(12 + 12)
- rounds = 100000
+ rounds = 10000*22
def test(self):
@@ -747,7 +747,7 @@
version = 0.3
operations = 5*(3*5 + 3*5)
- rounds = 70000
+ rounds = 7000*15
def test(self):
Modified: sandbox/trunk/rjsh-pybench/Numbers.py
==============================================================================
--- sandbox/trunk/rjsh-pybench/Numbers.py (original)
+++ sandbox/trunk/rjsh-pybench/Numbers.py Fri May 26 16:24:51 2006
@@ -4,7 +4,7 @@
version = 0.1
operations = 30 * 5
- rounds = 120000
+ rounds = 12000*21
def test(self):
@@ -200,7 +200,7 @@
version = 0.1
operations = 30 * 5
- rounds = 60000
+ rounds = 6000*27
def test(self):
@@ -396,7 +396,7 @@
version = 0.1
operations = 30 * 5
- rounds = 60000
+ rounds = 6000*16
def test(self):
@@ -592,7 +592,7 @@
version = 0.1
operations = 30 * 5
- rounds = 60000
+ rounds = 6000*24
def test(self):
Modified: sandbox/trunk/rjsh-pybench/Strings.py
==============================================================================
--- sandbox/trunk/rjsh-pybench/Strings.py (original)
+++ sandbox/trunk/rjsh-pybench/Strings.py Fri May 26 16:24:51 2006
@@ -87,7 +87,7 @@
version = 0.2
operations = 10 * 5
- rounds = 200000
+ rounds = 20000*22
def test(self):
@@ -169,7 +169,7 @@
version = 0.1
operations = 10 * 5
- rounds = 200000
+ rounds = 20000*28
def test(self):
@@ -251,7 +251,7 @@
version = 0.1
operations = 10 * 5
- rounds = 80000
+ rounds = 8000*32
def test(self):
@@ -326,7 +326,7 @@
version = 0.1
operations = 5 * 7
- rounds = 100000
+ rounds = 10000*15
def test(self):
@@ -389,7 +389,7 @@
version = 0.1
operations = 3 * (5 + 4 + 2 + 1)
- rounds = 70000
+ rounds = 140000
def test(self):
@@ -462,7 +462,7 @@
version = 0.1
operations = 10 * 7
- rounds = 80000
+ rounds = 8000*24
def test(self):
Modified: sandbox/trunk/rjsh-pybench/Tuples.py
==============================================================================
--- sandbox/trunk/rjsh-pybench/Tuples.py (original)
+++ sandbox/trunk/rjsh-pybench/Tuples.py Fri May 26 16:24:51 2006
@@ -4,7 +4,7 @@
version = 0.31
operations = 3 * 25 * 10 * 7
- rounds = 400
+ rounds = 40*15
def test(self):
@@ -272,7 +272,7 @@
version = 0.3
operations = 5*(1 + 3 + 6 + 2)
- rounds = 80000
+ rounds = 8000*16
def test(self):
Modified: sandbox/trunk/rjsh-pybench/Unicode.py
==============================================================================
--- sandbox/trunk/rjsh-pybench/Unicode.py (original)
+++ sandbox/trunk/rjsh-pybench/Unicode.py Fri May 26 16:24:51 2006
@@ -10,7 +10,7 @@
version = 0.1
operations = 10 * 5
- rounds = 60000
+ rounds = 6000*7
def test(self):
@@ -92,7 +92,7 @@
version = 0.1
operations = 10 * 5
- rounds = 150000
+ rounds = 15000*17
def test(self):
@@ -174,7 +174,7 @@
version = 0.1
operations = 10 * 5
- rounds = 80000
+ rounds = 8000*12
def test(self):
@@ -310,7 +310,7 @@
version = 0.1
operations = 3 * (5 + 4 + 2 + 1)
- rounds = 10000
+ rounds = 1000*15
def test(self):
@@ -383,7 +383,7 @@
version = 0.1
operations = 5 * 9
- rounds = 100000
+ rounds = 10000*25
def test(self):
@@ -460,7 +460,7 @@
version = 0.1
operations = 5 * 8
- rounds = 100000
+ rounds = 10000*15
def test(self):
Modified: sandbox/trunk/rjsh-pybench/pybench.py
==============================================================================
--- sandbox/trunk/rjsh-pybench/pybench.py (original)
+++ sandbox/trunk/rjsh-pybench/pybench.py Fri May 26 16:24:51 2006
@@ -35,7 +35,7 @@
"""
# Version number
-__version__ = '1.3'
+__version__ = '1.4'
#
# NOTE: Use xrange for all test loops unless you want to face
@@ -115,13 +115,15 @@
# Misc. internal variables
last_timing = (0,0,0) # last timing (real,run,calibration)
warp = 1 # warp factor this test uses
- cruns = 0 # number of calibration runs
+ cruns = 20 # number of calibration runs
overhead = None # list of calibration timings
def __init__(self,warp=1):
if warp > 1:
self.rounds = self.rounds / warp
+ if self.rounds == 0:
+ self.rounds = 1
self.warp = warp
self.times = []
self.overhead = []
@@ -183,9 +185,13 @@
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:
@@ -200,7 +206,7 @@
else:
# use self.last_timing - not too accurate
ov_avg = self.last_timing[2]
- return mintime,avg,op_avg,ov_avg
+ return mintime, avg, op_avg, ov_avg
### Load Setup
@@ -225,7 +231,7 @@
self.tests = {}
self.version = 0.31
- def load_tests(self,setupmod,warp=1, limitnames=""):
+ def load_tests(self, setupmod, warp=1, limitnames="", verbose=0):
self.warp = warp
if limitnames:
@@ -233,7 +239,7 @@
else:
limitnames = None
tests = self.tests
- print 'Searching for tests...'
+ print 'Searching for tests ...',
setupmod.__dict__.values()
for c in setupmod.__dict__.values():
if not hasattr(c,'is_a_test'):
@@ -246,8 +252,12 @@
tests[name] = c(warp)
l = tests.keys()
l.sort()
- for t in l:
- print ' ',t
+ if verbose:
+ print
+ for t in l:
+ print ' ',t
+ else:
+ print len(l), "found"
print
def run(self, verbose):
@@ -259,6 +269,7 @@
print
roundtime = clock()
for i in range(self.rounds):
+ roundstarttime = clock()
if verbose:
print ' Round %-25i real abs overhead' % (i+1)
for j in range(len(tests)):
@@ -274,7 +285,7 @@
((clock() - roundtime)/(i+1))
print
else:
- print '%d ... done'%i
+ print '%d done in %.3f seconds' % (i+1, (clock() - roundstarttime))
self.roundtime = (clock() - roundtime) / self.rounds
print
@@ -305,8 +316,8 @@
tests.sort()
compatible = 1
totalmintime = other_totalmintime = 0
- for name,t in tests:
- mintime,avg,op_avg,ov_avg = t.stat()
+ for name, t in tests:
+ mintime, avg, op_avg, ov_avg = t.stat()
totalmintime += mintime
try:
other = compare_to.tests[name]
@@ -314,24 +325,27 @@
other = None
if other and other.version == t.version and \
other.operations == t.operations:
- mintime1,avg1,op_avg1,ov_avg1 = other.stat()
+ mintime1, avg1, op_avg1, ov_avg1 = other.stat()
other_totalmintime += mintime1
- diff = (mintime/mintime1 - 1.0)*100.0
+ diff = ((mintime*self.warp)/(mintime1*other.warp) - 1.0)*100.0
if hidenoise and abs(qop_avg) < 10:
diff = ''
else:
diff = '%+7.2f%%' % diff
else:
- qavg,diff = 'n/a', 'n/a'
+ qavg, diff = 'n/a', 'n/a'
compatible = 0
print '%30s: %8.2f ms %8.2f ms %8.2f ms %8s' % \
- (name,mintime*1000.0,mintime1*1000.0, avg*1000.0,diff)
+ (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: %8.2f ms %8.2f ms %+7.2f%%' % \
('Notional minimum round time', totalmintime * 1000.0,
- other_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:
@@ -479,7 +493,7 @@
# Create benchmark object
bench = Benchmark()
bench.rounds = rounds
- bench.load_tests(Setup,warp,limitnames)
+ bench.load_tests(Setup, warp, limitnames, verbose)
try:
bench.run(verbose)
except KeyboardInterrupt:
More information about the Python-checkins
mailing list