the 0.409 vs 0.095 is the total times right? so the imperative function is >4 times faster than the recursive. or what does tottime stand for?
is this always the case that the recursive function is slower? the gain is less code? are some functions only implementable recursively? def power(nbr, po): if po==0: return 1 if po>0: return nbr*power(nbr, po-1) if po<0: return 1/power(nbr, -1*po) 109992 function calls (10002 primitive calls) in 0.409 CPU seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.015 0.015 0.409 0.409 <pyshell#217>:1(test1) 1 0.000 0.000 0.409 0.409 <string>:1(<module>) 109989/9999 0.394 0.000 0.394 0.000 myMath.py:39(power) 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} def power2(nbr, po): acc=1 if po >= 1: acc=nbr for x in range(1, po): acc=acc*nbr if po < 0: if nbr!=0: acc=1 for x in range(0, po, -1): acc=acc/nbr else: return "Division by zero" return acc 20001 function calls in 0.095 CPU seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.026 0.026 0.095 0.095 <pyshell#221>:1(test1) 1 0.000 0.000 0.095 0.095 <string>:1(<module>) 9999 0.051 0.000 0.069 0.000 myMath.py:47(power2) 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 9999 0.017 0.000 0.017 0.000 {range} -- http://mail.python.org/mailman/listinfo/python-list