jupiterbjy

62658688

Jun 30th, 2020
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.29 KB | None | 0 0
  1. from functools import singledispatch
  2. import timeit
  3.  
  4. words = ["Ekke", "ekke", "Ptang", "Zoo", "Boing"]
  5. args_list = [("arg1", "Ni!"), ("arg2", "Peng!"), ("arg3", "Neee-Wom!"), ("arg4", words)]
  6.  
  7.  
  8. def do_something(a, b):
  9.     pass
  10.  
  11.  
  12. # ---------------------------------
  13. @singledispatch
  14. def func(a, b):
  15.     do_something(a, b)
  16.  
  17.  
  18. @func.register(list)
  19. def func_list(a, b):
  20.     for i in b:
  21.         do_something(a, i)
  22.  
  23.  
  24. def single_dispatched():
  25.     for arg, item in args_list:
  26.         func(arg, item)
  27.  
  28.  
  29. # ---------------------------------
  30. def is_instance_method():
  31.     for arg, item in args_list:
  32.         if isinstance(item, list):
  33.             for i in item:
  34.                 do_something(arg, i)
  35.         else:
  36.             do_something(arg, item)
  37.  
  38.  
  39. # ---------------------------------
  40. def try_except_method():
  41.     for arg, item in args_list:
  42.         try:
  43.             for i in item:
  44.                 do_something(arg, i)
  45.         except TypeError:
  46.             do_something(arg, item)
  47.  
  48.  
  49. # ---------------------------------
  50.  
  51. single_result = timeit.timeit(single_dispatched, number=100)
  52. is_instance_result = timeit.timeit(is_instance_method, number=100)
  53. try_except_result = timeit.timeit(try_except_method, number=100)
  54.  
  55. print(single_result, is_instance_result, try_except_result, sep='\n')
Add Comment
Please, Sign In to add comment