Help- Recursion v. Iter Speed comparison

Robert Kern rkern at ucsd.edu
Thu Mar 3 17:49:51 EST 2005


actuary77 wrote:
> Robert Kern wrote:
> 
>> actuary77 wrote:
>>
>>> #================================================
>>> #  non-generator
>>> #================================================
>>>
>>>
>>> def f1(afunc,aseed,n):
>>>     values = [afunc(aseed)]
>>>     for i in range(n-1):
>>>         values.append(afunc(values[-1]))
>>>     return values[-1]
>>>
>>> _b=time()
>>> for _i in range(0,100):
>>>     _y = f1(myfunc,seed,n)
>>
>>
>>
>> Why do you do this? The whole point of this approach was to keep the 
>> intermediate results instead of recomputing them every time!
>>
> The point is to get some meaningful results when "timing" the function.

No, they're not meaningful. You're taking an intrinsically linear 
algorithm and making it quadratic. That's never a good thing. The 
function I gave you does exactly the same thing as the function you have 
here plus the loop, but it does it faster. You asked for faster ways of 
doing the task; I gave you one.

>> And why do you prepend underscores everywhere? It's bad Python style.
> 
> 
> I prepend underscore to differentiate local,private variables vs. global 
> variables.  Do not want to create a conflict.  It is my understanding 
> that this is the Python style for local v. global variables.

It isn't.

Just use non-obfuscated variable names. There are cases where you want a 
leading underscore, but you haven't hit one, yet.

-- 
Robert Kern
rkern at ucsd.edu

"In the fields of hell where the grass grows high
  Are the graves of dreams allowed to die."
   -- Richard Harter



More information about the Python-list mailing list