profiler.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. '''
  2. Profiling performance of the geometry functions
  3. '''
  4. import cProfile
  5. import timeit
  6. from pypog import geometry
  7. _profile = ['geometry.squ2_line(0,0,1000,1000)',
  8. 'geometry.fhex2_line(0,0,1000,1000)',
  9. 'geometry.rectangle(0,0,1000,1000)',
  10. 'geometry.hollow_rectangle(0,0,1000,1000)',
  11. 'geometry.squ2_triangle(0,0,100,100,2)',
  12. 'geometry.fhex2_triangle(0,0,100,100,2)',
  13. # 'geometry.squ3_triangle(0,0,0,100,100,100,2)',
  14. # 'geometry.fhex3_triangle(0,0,0,100,100,100,2)',
  15. 'geometry.fhex2_pivot((0,0),[(i, j) for i in range(1, 100) for j in range(1,100)], 1)',
  16. 'geometry.squ2_pivot((0,0),[(i, j) for i in range(1, 100) for j in range(1,100)], 1)',
  17. ]
  18. for _call in _profile:
  19. print(">> {}".format(_call))
  20. cProfile.run(_call, sort='nfl')
  21. number = 1
  22. t = 0
  23. while 1:
  24. t = timeit.timeit(lambda: eval(_call), number=number)
  25. if t >= 1:
  26. break
  27. elif number > 1000000:
  28. print("error: number superior to a million")
  29. number = "err"
  30. t = "?"
  31. break
  32. number *= 10
  33. print("Timeit (x{}): {} s.\n".format(number, t))
  34. print("".join(["-" for _ in range(30)]))