MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Slowdown


Maxim wrote:
> Consider:
> 
> In[1]:=
> Module[{f, L},
>    L = f[];
>    Do[L = f[L, i], {i, 10^4}]
> ] // Timing
> 
> Module[{weirdness, L},
>    L = weirdness[];
>    Do[L = weirdness[L, i], {i, 10^4}]
> ] // Timing
> 
> Out[1]=
> {0.015*Second, Null}
> 
> Out[2]=
> {3.063*Second, Null}
> 
> Here the timings differ by a factor of 200. Besides, the timing grows  
> linearly in the first case and quadratically in the second (therefore, for  
> n=10^5 there will be an approximately 2000 times slowdown). We can only  
> guess that something goes wrong with the symbol name hashing.

The timing difference occurs when the symbol "wierdness" exceeds 8 
characters. Test it for "wierdnes". That seems to be a consequence of 
the machine routine for string comparison. Up to 8 characters can be 
used without using a memory to memory compare. Of course it should be 
possible to write a compare routine that makes not such a bit step.

-- 

Roland Franzius


  • Prev by Date: Partial evaulation of function terms
  • Next by Date: Thread
  • Previous by thread: Re: Re: Slowdown
  • Next by thread: Re: Re: Slowdown