Re: Re: Re: Re: Slowdown

*To*: mathgroup at smc.vnet.net*Subject*: [mg53306] Re: [mg53278] Re: [mg53254] Re: [mg53241] Re: Slowdown*From*: DrBob <drbob at bigfoot.com>*Date*: Wed, 5 Jan 2005 01:21:25 -0500 (EST)*References*: <cr33tt$je6$1@smc.vnet.net> <200501020912.EAA27775@smc.vnet.net> <200501030929.EAA10649@smc.vnet.net> <C570DAF1-5D86-11D9-8B6F-000A95B4967A@mimuw.edu.pl> <200501040813.DAA27157@smc.vnet.net>*Reply-to*: drbob at bigfoot.com*Sender*: owner-wri-mathgroup at wolfram.com

>> You can see a big jump in the hash value at weirdness$10. Actually, the hash value gets much SMALLER at that point. Bobby On Tue, 4 Jan 2005 03:13:00 -0500 (EST), Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote: > I just noticed another thing, which seems to throw more light at what > is happenng. Look carefully at the Hash values of the different names > of the form weirdness$number: > > > MapIndexed[{First[#2], Hash[#1]} & , > ToExpression /@ (StringJoin["weirdness", "$", > ToString[#1]] & ) /@ Range[20]] > > > {{1, 1783099877}, {2, 1783099878}, {3, 1783099879}, > {4, 1783099880}, {5, 1783099881}, {6, 1783099882}, > {7, 1783099883}, {8, 1783099884}, {9, 1783099885}, > {10, 667842086}, {11, 667842087}, {12, 667842088}, > {13, 667842089}, {14, 667842090}, {15, 667842091}, > {16, 667842092}, {17, 667842093}, {18, 667842094}, > {19, 667842095}, {20, 667843323}} > > You can see a big jump in the hash value at weirdness$10. That is > exactly the point at which the slowdown occurs. > > Andrzej Kozlowski > > > On 3 Jan 2005, at 21:55, Andrzej Kozlowski wrote: > >> I can't see any siginificant slowdowns demonstrated by your code. The >> differences in timings between different combinations seem >> insignificant. Cna you suggest any other name but "weirdness" that >> shows significant slowdown? >> >> Besides, using Module only obsures what is really happening. Module >> simply renames local variables by appending $somenumber to their name >> but the "number" that is used is different each time. You can do that >> whiteout Module and see exactly which names produce the slowdown >> effect. It seems that the names weirdness$1 to weirdness$9 do not. >> >> In[1]:= >> L=weirdness$1[]; >> Do[L=weirdness$1[L,i],{i,10^4}]//Timing >> >> Out[2]= >> {0.03 Second,Null} >> >> In[3]:= >> L=weirdness$9[]; >> Do[L=weirdness$9[L,i],{i,10^4}]//Timing >> >> Out[4]= >> {0.08 Second,Null} >> >> The problem seems to begin with weirdness$10 >> >> In[5]:= >> L=weirdness$10[]; >> Do[L=weirdness$10[L,i],{i,10^4}]//Timing >> >> Out[6]= >> {13.2 Second,Null} >> >> and continues for higher values, as far as I have checked. >> >> When you run Module with a fresh Kernel Mathematica seems to always >> begin by appending $17: >> >> In[1]:= >> Module[{weirdness, L}, >> L = weirdness[]; >> Do[L = weirdness[L, i], {i, 1}] >> ] // Trace >> >> Out[1]= >> {Module[{weirdness,L},L=weirdness[];Do[L=weirdness[L,i],{i,1}]],{L$17=\ >> weirdness$17[];Do[L$17=weirdness$17[L$17, >> >> i],{i,1}],{L$17=weirdness$17[],weirdness$17[]},{Do[L$17=weirdness$17[L$ >> \ >> 17,i],{i,1}],{{{L$17,weirdness$17[]},{i,1},weirdness$17[weirdness$17[], >> >> 1]},L$17=weirdness$17[weirdness$17[],1],weirdness$17[weirdness$17[],1]\ >> },Null},Null},Null} >> >> on subsequent runs this is increased: >> >> In[2]:= >> Module[{weirdness, L}, >> L = weirdness[]; >> Do[L = weirdness[L, i], {i, 1}] >> ] // Trace >> >> Out[2]= >> {Module[{weirdness,L},L=weirdness[];Do[L=weirdness[L,i],{i,1}]],{L$19=\ >> weirdness$19[];Do[L$19=weirdness$19[L$19, >> >> i],{i,1}],{L$19=weirdness$19[],weirdness$19[]},{Do[L$19=weirdness$19[L$ >> \ >> 19,i],{i,1}],{{{L$19,weirdness$19[]},{i,1},weirdness$19[weirdness$19[], >> >> 1]},L$19=weirdness$19[weirdness$19[],1],weirdness$19[weirdness$19[],1]\ >> },Null},Null},Null} >> >> in any case all these numbers are larger than 10 and produce slowdown, >> but the numbers 10-16 which never occur inside Module also suffer form >> this problem: >> >> In[3]:= >> L=weirdness$11[]; >> Do[L=weirdness$11[L,i],{i,10^4}]//Timing >> >> Out[4]= >> {13.1 Second,Null} >> >> In[5]:= >> L=weirdness$16[]; >> Do[L=weirdness$16[L,i],{i,10^4}]//Timing >> >> Out[6]= >> {14.62 Second,Null} >> >> However, I have not been able to find any other name but weirdness >> that produces this effect. This seems weird. >> >> Andrzej Kozlowski >> >> >> >> On 3 Jan 2005, at 18:29, yehuda ben-shimol wrote: >> >>> Hi Roland, >>> I'm afraid this is not true. Just try to run the code I sent with my >>> post. "weirdness" was time consuming while weirdness1 was not. In >>> addition it happened (not consistently) that function name of a SINGLE >>> character suffered from this behavior as well. >>> the code is given below for your convenience. >>> >>> 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, 104}]]]], {i, 1, 50}, {5}] >>> >>> >>> yehuda >>> >>> Roland Franzius wrote: >>> >>>> 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. >>>> >>> >> > > > > -- DrBob at bigfoot.com www.eclecticdreams.net

**References**:**Re: Slowdown***From:*Roland Franzius <roland.franzius@uos.de>

**Re: Re: Slowdown***From:*yehuda ben-shimol <benshimo@bgu.ac.il>

**Re: Re: Re: Slowdown***From:*Andrzej Kozlowski <akoz@mimuw.edu.pl>