Ich bin toying mit bestimmten Caching-Algorithmus, der etwas herausfordernd ist. Grundsätzlich muss es viele kleine Objekte (Double Arrays, 1 bis 256 Elemente) zuweisen, mit Objekten, die durch gemappte Wert zugänglich, map[key] = array
Die Zeit bis zur Initialisierung des Arrays kann recht groß sein, im Allgemeinen mehr als 10 Tausend CPU-Zyklen.
Mit "viel" meine ich insgesamt etwa ein Gigabyte. Objekte müssen je nach Bedarf gepoppt/geschoben werden, in der Regel an zufälligen Stellen, ein Objekt nach dem anderen. Die Lebensdauer eines Objekts ist in der Regel lang, Minuten oder mehr, jedoch kann das Objekt während der Programmdauer mehrmals zugewiesen/freigegeben werden.
Was wäre eine gute Strategie, um eine Speicherfragmentierung zu vermeiden und gleichzeitig eine vernünftige Geschwindigkeit beim Zuweisen und Freigeben beizubehalten?
Ich verwende C++, also kann ich new und malloc verwenden. Danke.
Ich weiß, dass es auf der Website ähnliche Fragen gibt, Effiziente Zuweisung vieler kurzlebiger kleiner Objekte sind etwas anders, Fadensicherheit ist für mich kein unmittelbares Thema.
meine Entwicklungsplattform ist Intel Xeon, Betriebssystem Linux. Idealerweise würde ich gerne auch auf PPC-Linux arbeiten, aber es ist nicht das wichtigste für mich.