Zitat von
jim_raynor:
Problem könnte ja sein, dass FastMM zwar schneller ist, dafür aber mehr Arbeitsspeicher zur Verwaltung braucht. Eventuell verursacht dieser Mehrverbrauch ein häufiges Auslagern des Speichers wodurch es natürlich langsamer wird.
Es ist natürlich klar, das Fast(X)MM mehr speicher benötig, denn gerade dadurch wir schließlich die Gewschwindigkeitssteigerung erzeugt (wenn man das so nennen kann).
Und aktuell ist es so, daß der Speichermehrverbrauch beim bis zu 3-Fachen des tatsächlich benötigten liegen kann, allerdings liegt im großen Durchschnitt der reelle Mehrverbrauch bei etwa 5-10%, was bei normalen Anwendungen und ausreichend
RAM kaum zu einer verstärkten Auslagerung des Speichers führen sollte.
Wenn aber dennoch Speicherbereiche ausgelagert sind, dann wird sich die Geschwindigkeitssteigung durch Fast(X)MM eventuell sogar noch verstärken (habs noch nich getestet), da ja die Veränderungen im Speicher (welcher bei Windows reserviert wurde) stark minimieren.
[add]Ach ja, wie breits gesagt wird sich eine Geschwindigkeitssteigerung nur vorwiegend bei kleinen Änderungen zeigen.
Du änders den Speicher aber um jeweils um 10 Schritte, also 80 Byte (10 mal 8 Byte pro Double), was bedeutet, das sich in den ersten Durchläufen (wenn das Array noch kurz ist), sich kaum/keine Verbesserung einstellen wird und slbst später wird sich die Verbesserung eigentlich nicht so sehr zeigen, denn im Grunde genommen hast du ja selber schon eine "kleine" Speicheroptimierung eingebaut,
if i mod 10 =0 then setlength(p,i+10);
wodurch du aber wiederum einige Vorteile von FastMM ausgehebelt hast