Back to index

python3.2  3.2.2
Public Member Functions | Public Attributes | Static Public Attributes
Calls.BuiltinFunctionCalls Class Reference
Inheritance diagram for Calls.BuiltinFunctionCalls:
Inheritance graph
[legend]
Collaboration diagram for Calls.BuiltinFunctionCalls:
Collaboration graph
[legend]

List of all members.

Public Member Functions

def test
def calibrate
def get_timer
def compatible
def calibrate_test
def run
def stat

Public Attributes

 last_timing
 warp
 times

Static Public Attributes

float version = 2.0
 Instance variables that each test should override.
int operations = 5
int rounds = 60000
int is_a_test = 1
 Internal variables.
tuple last_timing = (0.0, 0.0, 0.0)
int warp = 1
 calibration_runs = CALIBRATION_RUNS
 overhead_times = None
list times = []
 timer = TIMER_PLATFORM_DEFAULT

Detailed Description

Definition at line 170 of file Calls.py.


Member Function Documentation

Calibrate the test.

    This method should execute everything that is needed to
    setup and run the test - except for the actual operations
    that you intend to measure. pybench uses this method to
    measure the test implementation overhead.

Reimplemented from pybench.Test.

Definition at line 277 of file Calls.py.

00277 
00278     def calibrate(self):
00279 
00280         # localize functions
00281         f0 = dir
00282         f1 = hash
00283         f2 = divmod
00284         f3 = max
00285 
00286         # do calls
00287         for i in range(self.rounds):
00288             pass

Here is the caller graph for this function:

def pybench.Test.calibrate_test (   self) [inherited]

Definition at line 262 of file pybench.py.

00262 
00263     def calibrate_test(self):
00264 
00265         if self.calibration_runs == 0:
00266             self.overhead_times = [0.0]
00267             return
00268 
00269         calibrate = self.calibrate
00270         timer = self.get_timer()
00271         calibration_loops = range(CALIBRATION_LOOPS)
00272 
00273         # Time the calibration loop overhead
00274         prep_times = []
00275         for i in range(self.calibration_runs):
00276             t = timer()
00277             for i in calibration_loops:
00278                 pass
00279             t = timer() - t
00280             prep_times.append(t / CALIBRATION_LOOPS)
00281         min_prep_time = min(prep_times)
00282         if _debug:
00283             print()
00284             print('Calib. prep time     = %.6fms' % (
00285                 min_prep_time * MILLI_SECONDS))
00286 
00287         # Time the calibration runs (doing CALIBRATION_LOOPS loops of
00288         # .calibrate() method calls each)
00289         for i in range(self.calibration_runs):
00290             t = timer()
00291             for i in calibration_loops:
00292                 calibrate()
00293             t = timer() - t
00294             self.overhead_times.append(t / CALIBRATION_LOOPS
00295                                        - min_prep_time)
00296 
00297         # Check the measured times
00298         min_overhead = min(self.overhead_times)
00299         max_overhead = max(self.overhead_times)
00300         if _debug:
00301             print('Calib. overhead time = %.6fms' % (
00302                 min_overhead * MILLI_SECONDS))
00303         if min_overhead < 0.0:
00304             raise ValueError('calibration setup did not work')
00305         if max_overhead - min_overhead > 0.1:
00306             raise ValueError(
00307                 'overhead calibration timing range too inaccurate: '
00308                 '%r - %r' % (min_overhead, max_overhead))

def pybench.Test.compatible (   self,
  other 
) [inherited]
Return 1/0 depending on whether the test is compatible
    with the other Test instance or not.

Definition at line 250 of file pybench.py.

00250 
00251     def compatible(self, other):
00252 
00253         """ Return 1/0 depending on whether the test is compatible
00254             with the other Test instance or not.
00255 
00256         """
00257         if self.version != other.version:
00258             return 0
00259         if self.rounds != other.rounds:
00260             return 0
00261         return 1

Here is the caller graph for this function:

def pybench.Test.get_timer (   self) [inherited]
Return the timer function to use for the test.

Definition at line 243 of file pybench.py.

00243 
00244     def get_timer(self):
00245 
00246         """ Return the timer function to use for the test.
00247 
00248         """
00249         return get_timer(self.timer)

Here is the caller graph for this function:

def pybench.Test.run (   self) [inherited]
Run the test in two phases: first calibrate, then
    do the actual test. Be careful to keep the calibration
    timing low w/r to the test timing.

Definition at line 309 of file pybench.py.

00309 
00310     def run(self):
00311 
00312         """ Run the test in two phases: first calibrate, then
00313             do the actual test. Be careful to keep the calibration
00314             timing low w/r to the test timing.
00315 
00316         """
00317         test = self.test
00318         timer = self.get_timer()
00319 
00320         # Get calibration
00321         min_overhead = min(self.overhead_times)
00322 
00323         # Test run
00324         t = timer()
00325         test()
00326         t = timer() - t
00327         if t < MIN_TEST_RUNTIME:
00328             raise ValueError('warp factor too high: '
00329                              'test times are < 10ms')
00330         eff_time = t - min_overhead
00331         if eff_time < 0:
00332             raise ValueError('wrong calibration')
00333         self.last_timing = (eff_time, t, min_overhead)
00334         self.times.append(eff_time)

def pybench.Test.stat (   self) [inherited]
Return test run statistics as tuple:

    (minimum run time,
     average run time,
     total run time,
     average time per operation,
     minimum overhead time)

Definition at line 357 of file pybench.py.

00357 
00358     def stat(self):
00359 
00360         """ Return test run statistics as tuple:
00361 
00362             (minimum run time,
00363              average run time,
00364              total run time,
00365              average time per operation,
00366              minimum overhead time)
00367 
00368         """
00369         runs = len(self.times)
00370         if runs == 0:
00371             return 0.0, 0.0, 0.0, 0.0
00372         min_time = min(self.times)
00373         total_time = sum(self.times)
00374         avg_time = total_time / float(runs)
00375         operation_avg = total_time / float(runs
00376                                            * self.rounds
00377                                            * self.operations)
00378         if self.overhead_times:
00379             min_overhead = min(self.overhead_times)
00380         else:
00381             min_overhead = self.last_timing[2]
00382         return min_time, avg_time, total_time, operation_avg, min_overhead

Here is the call graph for this function:

Run the test.

    The test needs to run self.rounds executing
    self.operations number of operations each.

Reimplemented from pybench.Test.

Definition at line 176 of file Calls.py.

00176 
00177     def test(self):
00178 
00179         # localize functions
00180         f0 = globals
00181         f1 = hash
00182         f2 = divmod
00183         f3 = max
00184 
00185         # do calls
00186         for i in range(self.rounds):
00187 
00188             f0()
00189             f0()
00190             f1(i)
00191             f1(i)
00192             f1(i)
00193             f1(i)
00194             f1(i)
00195             f2(1,2)
00196             f2(1,2)
00197             f2(1,2)
00198             f2(1,2)
00199             f2(1,2)
00200             f3(1,3,2)
00201             f3(1,3,2)
00202             f3(1,3,2)
00203             f3(1,3,2)
00204             f3(1,3,2)
00205 
00206             f0()
00207             f0()
00208             f1(i)
00209             f1(i)
00210             f1(i)
00211             f1(i)
00212             f1(i)
00213             f2(1,2)
00214             f2(1,2)
00215             f2(1,2)
00216             f2(1,2)
00217             f2(1,2)
00218             f3(1,3,2)
00219             f3(1,3,2)
00220             f3(1,3,2)
00221             f3(1,3,2)
00222             f3(1,3,2)
00223 
00224             f0()
00225             f0()
00226             f1(i)
00227             f1(i)
00228             f1(i)
00229             f1(i)
00230             f1(i)
00231             f2(1,2)
00232             f2(1,2)
00233             f2(1,2)
00234             f2(1,2)
00235             f2(1,2)
00236             f3(1,3,2)
00237             f3(1,3,2)
00238             f3(1,3,2)
00239             f3(1,3,2)
00240             f3(1,3,2)
00241 
00242             f0()
00243             f0()
00244             f1(i)
00245             f1(i)
00246             f1(i)
00247             f1(i)
00248             f1(i)
00249             f2(1,2)
00250             f2(1,2)
00251             f2(1,2)
00252             f2(1,2)
00253             f2(1,2)
00254             f3(1,3,2)
00255             f3(1,3,2)
00256             f3(1,3,2)
00257             f3(1,3,2)
00258             f3(1,3,2)
00259 
00260             f0()
00261             f0()
00262             f1(i)
00263             f1(i)
00264             f1(i)
00265             f1(i)
00266             f1(i)
00267             f2(1,2)
00268             f2(1,2)
00269             f2(1,2)
00270             f2(1,2)
00271             f2(1,2)
00272             f3(1,3,2)
00273             f3(1,3,2)
00274             f3(1,3,2)
00275             f3(1,3,2)
00276             f3(1,3,2)

Here is the caller graph for this function:


Member Data Documentation

pybench.Test.calibration_runs = CALIBRATION_RUNS [static, inherited]

Definition at line 206 of file pybench.py.

int pybench.Test.is_a_test = 1 [static, inherited]

Internal variables.

Definition at line 197 of file pybench.py.

tuple pybench.Test.last_timing = (0.0, 0.0, 0.0) [static, inherited]

Definition at line 200 of file pybench.py.

Definition at line 332 of file pybench.py.

Reimplemented from pybench.Test.

Definition at line 173 of file Calls.py.

pybench.Test.overhead_times = None [static, inherited]

Definition at line 209 of file pybench.py.

Reimplemented from pybench.Test.

Definition at line 174 of file Calls.py.

pybench.Test.timer = TIMER_PLATFORM_DEFAULT [static, inherited]

Definition at line 215 of file pybench.py.

list pybench.Test.times = [] [static, inherited]

Definition at line 212 of file pybench.py.

pybench.Test.times [inherited]

Definition at line 234 of file pybench.py.

float Calls.BuiltinFunctionCalls.version = 2.0 [static]

Instance variables that each test should override.

Reimplemented from pybench.Test.

Definition at line 172 of file Calls.py.

int pybench.Test.warp = 1 [static, inherited]

Definition at line 203 of file pybench.py.

pybench.Test.warp [inherited]

Definition at line 224 of file pybench.py.


The documentation for this class was generated from the following file: