Back to index

python3.2  3.2.2
Public Member Functions | Public Attributes | Static Public Attributes
Lookups.BuiltinMethodLookup Class Reference
Inheritance diagram for Lookups.BuiltinMethodLookup:
Inheritance graph
[legend]
Collaboration diagram for Lookups.BuiltinMethodLookup:
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 = 70000
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 746 of file Lookups.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 939 of file Lookups.py.

00939 
00940     def calibrate(self):
00941 
00942         l = []
00943         d = {}
00944 
00945         for i in range(self.rounds):
00946             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 752 of file Lookups.py.

00752 
00753     def test(self):
00754 
00755         l = []
00756         d = {}
00757 
00758         for i in range(self.rounds):
00759 
00760             l.append
00761             l.append
00762             l.append
00763             l.append
00764             l.append
00765 
00766             l.insert
00767             l.insert
00768             l.insert
00769             l.insert
00770             l.insert
00771 
00772             l.sort
00773             l.sort
00774             l.sort
00775             l.sort
00776             l.sort
00777 
00778             # d.has_key
00779             # d.has_key
00780             # d.has_key
00781             # d.has_key
00782             # d.has_key
00783 
00784             d.items
00785             d.items
00786             d.items
00787             d.items
00788             d.items
00789 
00790             d.get
00791             d.get
00792             d.get
00793             d.get
00794             d.get
00795 
00796             l.append
00797             l.append
00798             l.append
00799             l.append
00800             l.append
00801 
00802             l.insert
00803             l.insert
00804             l.insert
00805             l.insert
00806             l.insert
00807 
00808             l.sort
00809             l.sort
00810             l.sort
00811             l.sort
00812             l.sort
00813 
00814             # d.has_key
00815             # d.has_key
00816             # d.has_key
00817             # d.has_key
00818             # d.has_key
00819 
00820             d.items
00821             d.items
00822             d.items
00823             d.items
00824             d.items
00825 
00826             d.get
00827             d.get
00828             d.get
00829             d.get
00830             d.get
00831 
00832             l.append
00833             l.append
00834             l.append
00835             l.append
00836             l.append
00837 
00838             l.insert
00839             l.insert
00840             l.insert
00841             l.insert
00842             l.insert
00843 
00844             l.sort
00845             l.sort
00846             l.sort
00847             l.sort
00848             l.sort
00849 
00850             # d.has_key
00851             # d.has_key
00852             # d.has_key
00853             # d.has_key
00854             # d.has_key
00855 
00856             d.items
00857             d.items
00858             d.items
00859             d.items
00860             d.items
00861 
00862             d.get
00863             d.get
00864             d.get
00865             d.get
00866             d.get
00867 
00868             l.append
00869             l.append
00870             l.append
00871             l.append
00872             l.append
00873 
00874             l.insert
00875             l.insert
00876             l.insert
00877             l.insert
00878             l.insert
00879 
00880             l.sort
00881             l.sort
00882             l.sort
00883             l.sort
00884             l.sort
00885 
00886             # d.has_key
00887             # d.has_key
00888             # d.has_key
00889             # d.has_key
00890             # d.has_key
00891 
00892             d.items
00893             d.items
00894             d.items
00895             d.items
00896             d.items
00897 
00898             d.get
00899             d.get
00900             d.get
00901             d.get
00902             d.get
00903 
00904             l.append
00905             l.append
00906             l.append
00907             l.append
00908             l.append
00909 
00910             l.insert
00911             l.insert
00912             l.insert
00913             l.insert
00914             l.insert
00915 
00916             l.sort
00917             l.sort
00918             l.sort
00919             l.sort
00920             l.sort
00921 
00922             # d.has_key
00923             # d.has_key
00924             # d.has_key
00925             # d.has_key
00926             # d.has_key
00927 
00928             d.items
00929             d.items
00930             d.items
00931             d.items
00932             d.items
00933 
00934             d.get
00935             d.get
00936             d.get
00937             d.get
00938             d.get

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 749 of file Lookups.py.

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

Definition at line 209 of file pybench.py.

Reimplemented from pybench.Test.

Definition at line 750 of file Lookups.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.

Instance variables that each test should override.

Reimplemented from pybench.Test.

Definition at line 748 of file Lookups.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: