fork download
  1. import time
  2. import numpy as np
  3. import gc
  4.  
  5. def fib_stack1(n):
  6. """ Original function """
  7. assert type(n) is int, 'Expected an integer as input.'
  8. if n < 2:
  9. return n
  10. else:
  11. stack = [0, 1]
  12. for i in range(n-1):
  13. stack.append(stack[-1] + stack[-2])
  14. return stack[-1]
  15.  
  16. def fib_stack2(n):
  17. """ Modified function """
  18. assert type(n) is int, 'Expected an integer as input.'
  19. if n < 2:
  20. return n
  21. else:
  22. stack = [0, 1]
  23. for i in range(n-1):
  24. stack.append(stack[-1] + stack[-2])
  25. ### CHANGE ###
  26. stack.pop(-3)
  27. ##############
  28. return stack[-1]
  29.  
  30.  
  31. rec1 = []
  32. rec2 = []
  33. rec3 = []
  34. rec4 = []
  35. for _ in range(5):
  36. t1 = time.time()
  37. fib_stack1(99999)
  38. t2 = time.time()
  39. rec1.append(t2-t1)
  40.  
  41. t1 = time.time()
  42. fib_stack2(99999)
  43. t2 = time.time()
  44. rec2.append(t2-t1)
  45.  
  46. gc.disable()
  47.  
  48. t1 = time.time()
  49. fib_stack1(99999)
  50. t2 = time.time()
  51. rec3.append(t2-t1)
  52.  
  53. t1 = time.time()
  54. fib_stack2(99999)
  55. t2 = time.time()
  56. rec4.append(t2-t1)
  57.  
  58. gc.enable()
  59. print(np.array(rec1).mean())
  60. print(np.array(rec2).mean())
  61. print(np.array(rec3).mean())
  62. print(np.array(rec4).mean())
Success #stdin #stdout 2.63s 549376KB
stdin
Standard input is empty
stdout
0.143141269684
0.119754171371
0.129710578918
0.120082950592