![]() |
AW: Freigeben von Listen durch Threads beschleunigen
Zitat:
Zitat:
Zitat:
Wenn man wirklich ein Muster hat, in der man eine große Datenstruktur erzeugt, dann zerstört und wieder neu aufbaut, dann kann man mit mehr Aufwand noch einiges machen ... z.B. braucht man Objekte nicht einzeln freigeben, sondern verwendet einen Block einfach wieder. Dadurch das der dann wieder leer ist, sind selbst Allokationen supergünstig. Das hat dann natürlich mehr Einfluss auf die Wartbarkeit :mrgreen: |
AW: Freigeben von Listen durch Threads beschleunigen
Du kannst ja mal
![]() Aber ich frage mich, ob es überhaupt Sinn machen kann, das Freigeben durch mehrere Threads zu beschleunigen, da der Arbeitsspeicher der Flaschenhals sein sollte und nicht die CPU. Du kannst noch so viele Threads auf das Problem ansetzen, der Durchsatz des Arbeitsspeichers erhöht sich dadurch ja nicht. Selbst mit einem perfekt skalierenden Speichermanager wird da vermutlich kaum etwas rauszuholen sein, wenn überhaupt. |
AW: Freigeben von Listen durch Threads beschleunigen
Zitat:
Und dann spielt eventuell noch die eine oder andere Cache mit. |
AW: Freigeben von Listen durch Threads beschleunigen
Zitat:
|
AW: Freigeben von Listen durch Threads beschleunigen
Zitat:
Zitat:
|
AW: Freigeben von Listen durch Threads beschleunigen
Die Datenmange kann es kaum sein.
Konkrete Zahlen aus meinem System / Testprojekt: Das Abbauen der Liste dauert rund 300ms - für einen Rechner als eine durchaus nennenswerte Zeit. Der Taskmanager listet mir für die Anwendung einen Speicherverbrauch von 360 MBytes. Ich weiß, dass der Task-Manager nicht besonders präzise ist, aber für eine grobe Schätzung sollte der Wert langen. Selbst wenn sich das alles in einer VM abspielt, müsste doch mehr an Daten durch den Bus passen. Zudem wird doch gar nicht das komplette Speicher-Abbild durch den Bus gepresst, oder? Ich überschreibe die Bereiche ja nicht mit Nullen oder dgl. |
AW: Freigeben von Listen durch Threads beschleunigen
Aber außer Speicherzugriffen dürfte doch kaum etwas passieren. Ich wüsste zumindest nicht was. Außer du machst irgendwelche komplizierten Dinge im Destruktor.
|
AW: Freigeben von Listen durch Threads beschleunigen
Zitat:
|
AW: Freigeben von Listen durch Threads beschleunigen
Ich habe gerade mal ScaleMM getestet. Der reserviert deutlich mehr RAM dabei, so dass es ein Out of Memory gibt und ist langsamer...
sapmm z.B. reserviert auch mehr, aber nicht so viel mehr, ist aber auch langsamer, insbesondere mit zwei Threads deutlich. Ich bekomme so langsam das Gefühl, dass FastMM doch nicht so schlecht ist. ;-) |
AW: Freigeben von Listen durch Threads beschleunigen
FastMM hat von den kleineren Blöcken extra mehrere, so daß bis zu 3 Threads gleichzeitig RAM "bestellen" können,
aber beim Freigeben oder Ändern kann, je Gruppe, natürlich immer nur Einer gleichzeitig, wenn die Speicher zufällig im selben Block liegen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz