Re: Slowdown
- To: mathgroup at smc.vnet.net
- Subject: [mg53242] Re: Slowdown
- From: Peter Pein <petsie at arcor.de>
- Date: Sun, 2 Jan 2005 04:12:52 -0500 (EST)
- References: <cr5k8m$18l$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
yehuda ben-shimol wrote:
...
> Since you need to observe it yourself, on your machine, I suggest that you
> run the following code and check the (emuzing) results yourself.
>
>
> t = CharacterRange["a", "z"];
> Do[fname = StringJoin[t[[Table[Random[Integer, {1,26}], {i}]]]];
> Print[i, "\t", fname, "\t",
> Timing[
> Module[{fs = ToExpression[fname], L},
> L = fs[];
> Do[L = fs[L, j], {j, 10^4}]]]], {i, 1, 50}, {5}]
>
> This rather simple "computer experiment" on Mathematica (as S. Wolfram might
> say) shows that the timing problem is not dependent on the length of the
> function name (at least until length 50 that I checked).
> I couldn't believe that the performance depends on the function's name??????
> Can we get a comment from one of the WRI professionals on that issue?
> yehuda
>
That's funny. I just have been lucky not to get trapped? I modified your
code to generate function names consisting of n times the same letter.
Here's what I got for the length of the name from 1 to 50 (Mathematica 4):
In[1]:=
tlist = Complement[Join[CharacterRange["a", "z"], CharacterRange["A", "Z"]],
ToString /@ {B, C, D, E, I, M, N, O, V}];
weird[n_] := Extract[ToExpression[tlist], Position[
(1/Second*First[Timing[
Module[{fs = ToExpression[StringJoin @@ Table[#1,{n}]], L}, L
= fs[];
Do[L = fs[L, j],
{j, 1000}]]]] & ) /@ tlist,
x_ /; x > 0.02 (*adjust this*)]];
wlist = weird /@ Range[12]
Out[3]=
{{J, l, L, w, W, y, Y},
{j, J, l, L, w, W, y, Y},
{j, J, l, L, w, W, y, Y},
{g, G, m, t, T, z, Z},
{g, G, m, t, T, z, Z},
{g, G, m, t, T, z, Z},
{g, G, m, t, T, z, Z},
{},
{},
{},
{},
{j, J, l, L, w, W, y, Y}}
For k>=1 the "slow" letters are the same for the lengths 4k..4k+3:
In[4]:=
weird /@ Range[396, 403]
Out[4]=
{{j, J, l, L, w, W, y, Y}, {j, J, l, L, w, W, y, Y},
{j, J, l, L, w, W, y, Y}, {j, J, l, L, w, W, y, Y},
{g, G, t, T, z, Z}, {g, G, t, T, z, Z},
{g, G, t, T, z, Z}, {g, G, t, T, z, Z}}
strange, isn't it?
--
Peter Pein
Berlin