Forum: Object-Pascal / Delphi-Language
Delphi
by BUG,
26. Feb 2015
Die Datenstruktur wird wiederholt freigegeben und wieder neu aufgebaut. Wenn man bei der Freigabe, anstelle sich um ein Lock zu kloppen, die Instanz lokal merken kann, könnte das schon was bringen.
Ein großer Baum, der öfter mal neu erstellt wird und ansonsten von 2 Threads durchsucht wird ... klingt nach einer spannenden Anwendung :mrgreen:
Forum: Object-Pascal / Delphi-Language
Delphi
by BUG,
26. Feb 2015
Das ist das Schöne an einer Lösung, wo man für eine konkrete Klasse noch einen Pool dazwischenschalten kann: Ich kann jedes Objekt in jeden Pool stecken, praktisch also auch ganz schnell in meinen Thread-lokalen.
Forum: Object-Pascal / Delphi-Language
Delphi
by BUG,
25. Feb 2015
Ah, also bietet Delphi da auch Schnittstellen an :thumb:
Wenn du eine globale Liste hast, dann baust du dir vermutlich wieder einen Flaschenhals ein; möglicherweise selbst wenn du lockfreie Datenstrukturen verwenden solltest. Ein Pool pro Thread ist vermutlich günstiger.
Wo hast du da vorbehalte? Im Prinzip ändert sich an der Schnittstelle der Objekte nichts.
Wenn man wirklich ein Muster...
Forum: Object-Pascal / Delphi-Language
Delphi
by BUG,
24. Feb 2015
Üblicherweise ist Speicherverwaltung und mehrere Threads nicht wirklich toll. Im schlimmsten Fall serialisierst du das Freigeben durch einen Lock wieder vollständig (und hast dann noch den Overhead).
Wenn du die Liste eh wieder aufbaust: Kannst du die Objekte wiederverwenden? Die Performance-Leute für Sprachen mit GC machen das auch ganz "gerne".
Bei diesen Dimensionen und je nach...