Ich spiele mit bestimmten Caching-Algorithmus, der etwas herausfordernd ist. Im Grunde muss es viele kleine Objekte (doppelte Arrays, 1 bis 256 Elemente) mit Objekten zuweisen, auf die über den zugeordneten Wert map[key] = array
zugegriffen werden kann. Die Zeit bis zum initialisierten Array kann ziemlich groß sein, im Allgemeinen mehr als 10 Tausend CPU-Zyklen.Strategie zum Zuweisen/Freigeben vieler kleiner Objekte
Mit vielen meine ich rund Gigabyte insgesamt. Objekte müssen möglicherweise nach Bedarf gepoppt/geschoben werden, im Allgemeinen an zufälligen Stellen, jeweils ein Objekt. Lebensdauer eines Objekts ist in der Regel lang, Minuten oder mehr, jedoch kann Objekt während der Dauer des Programms mehrfach zugeordnet/freigegeben werden.
Was wäre eine gute Strategie, um Speicherfragmentierung zu vermeiden, während immer noch vernünftige Zuteilung deallocate Geschwindigkeit beibehalten?
Ich benutze C++, damit ich neue und malloc verwenden kann. Danke.
Ich kenne dort eine ähnliche Fragen auf der Website, Efficiently allocating many short-lived small objects, sind etwas anders, Thread Sicherheit ist nicht unmittelbar für mich.
Meine Entwicklungsplattform ist Intel Xeon, Linux-Betriebssystem. Idealerweise würde ich gerne auch an PPC Linux arbeiten, aber das ist nicht das Wichtigste für mich.
Was ist die Plattform? Ich meine, OS, CPU-Architektur, Compiler usw. Diese können die Antwort wesentlich beeinflussen. –