fork download
  1. from functools import wraps
  2. from time import perf_counter_ns
  3.  
  4. def time_it(f):
  5. @wraps(f)
  6. def wrap(*args, **kw):
  7. ts = perf_counter_ns()
  8. result = f(*args, **kw)
  9. te = perf_counter_ns()
  10. print(f'func: {f.__name__} args: [{args}, {kw}] took: {(te - ts) / 1_000_000_000} sec.')
  11. return result
  12. return wrap
  13.  
  14. # A list of 100_000 dictionaries:
  15. l = [{'v': 1} for _ in range(100_000)]
  16.  
  17. N = 300
  18.  
  19. @time_it
  20. def test1():
  21. for _ in range(N):
  22. l_copy = list(d['v'] for d in l)
  23. return l_copy
  24.  
  25. @time_it
  26. def test2():
  27. for _ in range(N):
  28. l_copy = [d['v'] for d in l]
  29. return l_copy
  30.  
  31.  
  32. test1()
  33. test2()
Success #stdin #stdout 3.23s 35356KB
stdin
Standard input is empty
stdout
func: test1 args: [(), {}] took: 1.848203969 sec.
func: test2 args: [(), {}] took: 1.346855361 sec.