Frühere | Chronologischer Index | Spätere | ||
Vorherige | Thematischer Index | Nächste |
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.
gamerKeineAusreisser.jpeg
Description: JPEG image
Frühere | Chronologischer Index | Spätere | ||
Vorherige | Thematischer Index | Nächste |
DMUG-Archiv, http://www.mathematica.ch/archiv.html