[plt-scheme] tree-recursion vs explicit stack tail-recursive
My unclear point was that code readability (and reliability, etc) is
often more important than 20% improvements in speed.
RAC
On Apr 23, 2010, at 7:57 AM, Joe Marshall <jmarshall at alum.mit.edu>
wrote:
> On Fri, Apr 23, 2010 at 10:04 AM, Richard Cleis <rcleis at mac.com>
> wrote:
>> On Apr 23, 2010, at 6:18 AM, Joe Marshall <jmarshall at alum.mit.edu>
>> wrote:
>> ...
>>>
>>> In real life I *did* find a program that was spending an inordinate
>>> amount of time counting the elements in a list --- a good 20%!
>>> The performance dramatically improved
>>
>> ...
>>
>> It improved more than 20% ?
>
> It didn't improve *more* than the wasted time, if that's what you
> are asking.
> It improved close to 20%, though.
>
> It was a complex program and everyone thought that naturally
> it will take a good chunk of time to compute things, so no one
> suspected
> anything was wrong. Then I ran the profiler and found that LENGTH was
> the number 1 function. One of the core routines had a boner in it
> like this:
> (do ((i 0 (+ i 1))
> ....
> ((>= i (length l)) ....))
>
> Which isn't a problem for small lists, but a huge problem for medium-
> sized
> or long lists.
>
> The point being that avoiding computation altogether outperforms any
> other improvement.
>
> --
> ~jrm