Advertisement
Guest User

Comparison between 'map', 'for' and 'enumerate'

a guest
Mar 22nd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.15 KB | None | 0 0
  1. from time import time
  2.  
  3.  
  4. def clock(func):
  5.     def wrapper(*args, **kwargs):
  6.         start = time()
  7.         result = func(*args, **kwargs)
  8.         elapsed = (time() - start) * 1000
  9.         print(f'{func.__name__:8} {elapsed:3.0f}ms')
  10.         return result
  11.     return wrapper
  12.  
  13.  
  14. @clock
  15. def arthur(nums):
  16.     int(''.join(map(str, nums)))
  17.  
  18.  
  19. @clock
  20. def nick(nums):
  21.     int(''.join(str(i) for i in nums))
  22.  
  23.  
  24. @clock
  25. def ryan(nums):
  26.     sum(n * 10**i for i, n in enumerate(reversed(nums)))
  27.  
  28.  
  29. if __name__ == '__main__':
  30.     list_9k = [9] * 9000
  31.     list_180k = [9] * 180000
  32.  
  33.     header = '9k size'
  34.     print(f'{header:>14}\n--------------')
  35.     arthur(list_9k)
  36.     nick(list_9k)
  37.     ryan(list_9k)
  38.  
  39.     header = '180k size'
  40.     print(f'\n{header:>14}\n--------------')
  41.     arthur(list_180k)
  42.     nick(list_180k)
  43.     print('ryan       n/a')  # ryan(list_180k) would take too long to run
  44.  
  45. # OUTPUT
  46. #
  47. #        9k size
  48. # --------------
  49. # arthur     3ms
  50. # nick       4ms
  51. # ryan     492ms
  52. #
  53. #      180k size
  54. # --------------
  55. # arthur   198ms
  56. # nick     213ms
  57. # ryan       n/a
  58. #
  59. # Ranked by speed:
  60. # 1) map
  61. # 2) for
  62. # 3) for with enumerate
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement