2008-11-02 3 views

Antwort

17

Von den letzten Tests - wenn Objekterstellung nicht teuer ist (d. H. Nicht von externen Ressourcen abhängt - Zugriff auf Dateien, Registrierung, Datenbank ...), dann wird es Ihnen schwerfallen, den Speichermanager von Delphi zu schlagen. So schnell ist es.

Das gilt natürlich, wenn Sie eine aktuelle Delphi verwenden - wenn nicht, erhalten Sie FastMM4 von SourceForge und verwenden Sie es anstelle von Delphi internen MM.

6

Nur ein Profiler wird Ihnen sagen. Versuchen Sie beide Ansätze in einer engen Schleife und sehen, was oben herauskommt :-)

1

Ich denke, das hängt von dem Code ab, den Ihre Objekte beim Erstellen und Zerstören ausführen. Die Auswirkungen von TObject.Create und TObject.Destroy sind normalerweise vernachlässigbar und können durch den Caching-Overhead leicht überkompensiert werden.

Sie sollten auch berücksichtigen, dass der Status eines Objekts davon abweichen kann, wenn es nach der Erstellung erneut verwendet wird.

0

Oft ist die einzige Möglichkeit zu sagen - ist es zu versuchen.

Wenn die aktuelle Leistung angemessen ist, dann haben Sie nicht viel Aufruf zu versuchen und zu erhöhen. Wenn Sie jedoch Leistungsprobleme haben, kann einige Zwischenspeicherung (oder einige andere Strategien) hilfreich sein.

0

Sie benötigen auch einige Statistiken darüber, wie oft ein bestimmtes Objekt (eine Instanz) verwendet wird. Wenn Sie regelmäßig auf denselben Datensatz verweisen, kann die Caching-Leistung die Leistung wirklich verbessern. Wenn die Zugriffe jedoch auf alle möglichen Objekte verteilt sind, ist die Cache-Fehltrefferrate möglicherweise zu hoch, um sich zu lohnen.

15

Speicherzuweisung ist nur ein kleiner Teil davon, warum Sie zwischenspeichern möchten. Sie müssen die vollen Kosten für die Konstruktion eines semantisch gültigen Objekts kennen und sie mit den Kosten für das Abrufen von Elementen aus dem Cache vergleichen, und nicht nur für einen Mikro-Benchmark: Cache-Effekte (dh CPU-Cache) können die Laufzeitdynamik ändern in einer echten live laufenden Anwendung.

Oder um es anders auszudrücken, messen Sie es und finden Sie es heraus. Wenn Sie nicht messen, sind Sie kein Ingenieur, nur Raten.

+0

Ich weiß, dass Sie Recht haben. Ich habe mich nur gefragt, ob es sich überhaupt lohnt, das Benchmarking in diesem Bereich durchzuführen, oder ob ich mich anderweitig konzentrieren möchte. Gute Arbeit mit den neuen Features im D2009 Compiler BTW !! – Steve

3

Sie müssen unbedingt mit realen Lasten messen, um Fragen wie diese zu beantworten. Je nachdem, welche Ressourcen in diesen Objekten enthalten sind, wie etwa Ressourcenkonflikte, Baukosten, Größe usw., kann die Antwort Sie überraschen und je nach Art der Belastung sogar ändern.

Es ist normalerweise sehr schwierig zu bestimmen, wo Ihre Leistungsprobleme ohne Messung sein werden.

+0

Ich höre was du sagst. Ich wollte nur herausfinden, ob es überhaupt eine Überlegung wert ist, dieses Gebiet zu profilieren! – Steve