Browse Source

add profiling module

olivier.massot 8 years ago
parent
commit
e1b3cb3997
2 changed files with 42 additions and 1 deletions
  1. 42 0
      tests/profiler.py
  2. 0 1
      tests/test_geometry.py

+ 42 - 0
tests/profiler.py

@@ -0,0 +1,42 @@
+'''
+    Profiling performance of the geometry functions
+'''
+
+import cProfile
+import timeit
+
+from pypog import geometry
+
+_profile = ['geometry.squ2_line(0,0,1000,1000)',
+            'geometry.fhex2_line(0,0,1000,1000)',
+            'geometry.rectangle(0,0,1000,1000)',
+            'geometry.hollow_rectangle(0,0,1000,1000)',
+            'geometry.squ2_triangle(0,0,100,100,2)',
+            'geometry.fhex2_triangle(0,0,100,100,2)',
+#             'geometry.squ3_triangle(0,0,0,100,100,100,2)',
+#             'geometry.fhex3_triangle(0,0,0,100,100,100,2)',
+            'geometry.fhex2_pivot((0,0),[(i, j) for i in range(1, 100) for j in range(1,100)], 1)',
+            'geometry.squ2_pivot((0,0),[(i, j) for i in range(1, 100) for j in range(1,100)], 1)',
+            ]
+
+for _call in _profile:
+    print(">> {}".format(_call))
+    cProfile.run(_call, sort='nfl')
+
+    number = 1
+    t = 0
+    while 1:
+        t = timeit.timeit(lambda: eval(_call), number=number)
+        if t >= 1:
+            break
+        elif number > 1000000:
+            print("error: number superior to a million")
+            number = "err"
+            t = "?"
+            break
+        number *= 10
+
+    print("Timeit (x{}): {} s.\n".format(number, t))
+    print("".join(["-" for _ in range(30)]))
+
+

+ 0 - 1
tests/test_geometry.py

@@ -8,7 +8,6 @@ import unittest
 
 from pypog import geometry
 
-
 class Test(unittest.TestCase):
 
     # # neighbours