Jun-23-2020, 01:03 PM
Here's an old example program I did sometime back just to test the speed increase using numba:
Regards
Gary
from numba import jit import time ITERATIONS = 5000_000 MAXFIB = 20 @jit(nopython=True) def fastSum(max_No): val = 0 for num in range(1,max_No): val += 1/num return val def oldSum(max_No): val = 0 for num in range(1,max_No): val += 1/num return val def builtinSum(max_No): return sum((1/num for num in range(1,max_No))) @jit(nopython=True) def fib(num): return 1 if num <= 1 else fib(num-1) + fib(num - 2) @jit(nopython=True) def fibIter(num): val1,val2 = 1,1 for n in range(1,num): val1,val2 = val2,val1+val2 return val2 if __name__ == "__main__": for x in range(1,11): print(x,fibIter(x)) for test in range(3): print(f"Running {'fast' if not test else 'old' if test == 1 else 'builtin'} sum() for {ITERATIONS} element(s)") for run in range(10): start = time.time() theSum = fastSum(ITERATIONS) if not test else oldSum(ITERATIONS) if test == 1 else builtinSum(ITERATIONS) print(f"\tRun {run} : Answer = {theSum} : Elapsed = {(time.time() - start)}") a , b = fibIter(MAXFIB) , fibIter(MAXFIB-1) print(MAXFIB,a,b,a/b)If you run it you can see the sort of speed improvements possible, give it a go.
Regards
Gary