home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 June / maximum-cd-2011-06.iso / DiscContents / LibO_3.3.1_Win_x86_install_multi.exe / libreoffice1.cab / profilee.py < prev    next >
Encoding:
Python Source  |  2011-02-15  |  3.0 KB  |  116 lines

  1. """
  2. Input for test_profile.py and test_cprofile.py.
  3.  
  4. IMPORTANT: This stuff is touchy. If you modify anything above the
  5. test class you'll have to regenerate the stats by running the two
  6. test files.
  7.  
  8. *ALL* NUMBERS in the expected output are relevant.  If you change
  9. the formatting of pstats, please don't just regenerate the expected
  10. output without checking very carefully that not a single number has
  11. changed.
  12. """
  13.  
  14. import sys
  15.  
  16. # In order to have reproducible time, we simulate a timer in the global
  17. # variable 'TICKS', which represents simulated time in milliseconds.
  18. # (We can't use a helper function increment the timer since it would be
  19. # included in the profile and would appear to consume all the time.)
  20. TICKS = 42000
  21.  
  22. def timer():
  23.     return TICKS
  24.  
  25. def testfunc():
  26.     # 1 call
  27.     # 1000 ticks total: 270 ticks local, 730 ticks in subfunctions
  28.     global TICKS
  29.     TICKS += 99
  30.     helper()                            # 300
  31.     helper()                            # 300
  32.     TICKS += 171
  33.     factorial(14)                       # 130
  34.  
  35. def factorial(n):
  36.     # 23 calls total
  37.     # 170 ticks total, 150 ticks local
  38.     # 3 primitive calls, 130, 20 and 20 ticks total
  39.     # including 116, 17, 17 ticks local
  40.     global TICKS
  41.     if n > 0:
  42.         TICKS += n
  43.         return mul(n, factorial(n-1))
  44.     else:
  45.         TICKS += 11
  46.         return 1
  47.  
  48. def mul(a, b):
  49.     # 20 calls
  50.     # 1 tick, local
  51.     global TICKS
  52.     TICKS += 1
  53.     return a * b
  54.  
  55. def helper():
  56.     # 2 calls
  57.     # 300 ticks total: 20 ticks local, 260 ticks in subfunctions
  58.     global TICKS
  59.     TICKS += 1
  60.     helper1()                           # 30
  61.     TICKS += 2
  62.     helper1()                           # 30
  63.     TICKS += 6
  64.     helper2()                           # 50
  65.     TICKS += 3
  66.     helper2()                           # 50
  67.     TICKS += 2
  68.     helper2()                           # 50
  69.     TICKS += 5
  70.     helper2_indirect()                  # 70
  71.     TICKS += 1
  72.  
  73. def helper1():
  74.     # 4 calls
  75.     # 30 ticks total: 29 ticks local, 1 tick in subfunctions
  76.     global TICKS
  77.     TICKS += 10
  78.     hasattr(C(), "foo")                 # 1
  79.     TICKS += 19
  80.     lst = []
  81.     lst.append(42)                      # 0
  82.     sys.exc_info()                      # 0
  83.  
  84. def helper2_indirect():
  85.     helper2()                           # 50
  86.     factorial(3)                        # 20
  87.  
  88. def helper2():
  89.     # 8 calls
  90.     # 50 ticks local: 39 ticks local, 11 ticks in subfunctions
  91.     global TICKS
  92.     TICKS += 11
  93.     hasattr(C(), "bar")                 # 1
  94.     TICKS += 13
  95.     subhelper()                         # 10
  96.     TICKS += 15
  97.  
  98. def subhelper():
  99.     # 8 calls
  100.     # 10 ticks total: 8 ticks local, 2 ticks in subfunctions
  101.     global TICKS
  102.     TICKS += 2
  103.     for i in range(2):                  # 0
  104.         try:
  105.             C().foo                     # 1 x 2
  106.         except AttributeError:
  107.             TICKS += 3                  # 3 x 2
  108.  
  109. class C:
  110.     def __getattr__(self, name):
  111.         # 28 calls
  112.         # 1 tick, local
  113.         global TICKS
  114.         TICKS += 1
  115.         raise AttributeError
  116.