DMUG-Archiv 2011

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Performance mit AppendTo

Hallo Michael,

probieren Sie mit MemoryInUse[] aus, ob Mma 8.0.1 an den
Stichprobenlaengen, bei denen AppendTo[] zeitlich angespannt ist,
Speicher freigibt.

... kurz vor dem Mittag das noch aufgeräumt:

In[1]:= Remove[step]
step[o_Integer (* 1: Schiff, 0: Wasser *)] := o;
step[l_List] := Which[Last[l] >= 16, 1,
                   Mod[First[l],8] == 0, 0,
                   True, l + RandomChoice[{{0,0},{1,0},{-1,0},{0,1}}]];

In[12]:= Remove[wegeerzeugen]
wegeerzeugen[n_Integer] := Module[{wege = {}},
  Do[
   AppendTo[wege,
    FixedPointList[step, {4, 1},
     SameTest -> (#1 == #2 && Head[#1] == Integer &)]],
   {n}
   ];
  wege
  ]

In[14]:= First  @ (Timing @ wegeerzeugen[10000])
Out[14]= 2.683

Warum wird hier Table[] nicht verwendet?
Do[], AppendTo[], Reap[], Sow[] sind völlig überrissen an der Stelle.

In[15]:= Remove[wegeerzeugenReap]
wegeerzeugenReap[n_Integer] := Module[{temp = {}},
  Reap[Do[
     temp =
      FixedPointList[step, {4, 1},
       SameTest -> (#1 == #2 && Head[#1] == Integer &)];
     Sow[temp],
     {n}
     ];]
  ]

In[17]:= First @ (Timing @ wegeerzeugenReap[10000])
Out[17]= 2.137

nun ist AppendTo[] nur noch schwach langsamer als Reap/Sow
und das Bildchen von

In[18]:= temp = Table[{First[Timing[wegeerzeugen[i]]],
    First[Timing[wegeerzeugenReap[i]]]}, {i, 100, 10000, 100}];


In[20]:= ListPlot[{temp[[All, 1]], temp[[All, 2]]}, PlotStyle -> {Red, Blue},
 PlotRange -> All]

im Anhang zeigt, dass die Ausreisser bei der Verwendung von AppendTo[] weg sind.

Anscheinend haben die unnötigen Symbole 'Schiff' und 'Wasser' AppendTo[] mehr zu schaffen gemacht als dem Reap/Sow. Gemeinhin reicht es, und so arbeitet auch das Gehirn selber, wenn die Codierung
so spät wie möglich mitgeteilt wird: 0 -> Wasser, 1 -> Schiff.

Gruss
Udo.

Attachment: gamerKeineAusreisser.jpeg
Description: JPEG image

Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html