Effiziente Zuordnung vieler kurzlebiger kleiner Objekte

Ich habe eine kleine Klasse (16 Byte auf einem 32-Bit-System), die ich dynamisch zuweisen muss. In den meisten Fällen ist die Lebensdauer einer bestimmten Instanz sehr kurz. Einige Instanzen können auch über Threadgrenzen hinweg übergeben werden.

Nachdem ich einige Profile erstellt hatte, stellte ich fest, dass mein Programm anscheinend mehr Zeit für das Zuweisen und Aufheben der Zuweisung der Zuweisungen benötigt, als für die eigentliche Verwendung. Daher möchte ich die Standardeinstellung "Neu" ersetzen und "Löschen" durch etwas ersetzen, das ein wenig effizienter ist.

Für ein großes Objekt (z. B. DB-Verbindungen, deren Aufbau und Zuordnung teuer sind) verwende ich bereits ein Pooling-System, das jedoch eine Liste zum Speichern der "freien" Objekte sowie einen Mutex zur Thread-Sicherheit enthält . Zwischen dem Mutex und der Liste verhält es sich tatsächlich schlechter als beim grundlegenden Neu / Löschen für die kleinen Objekte.

Ich habe bei Google eine Reihe kleiner Objektzuordnungen gefunden, die jedoch anscheinend einen globalen / statischen Pool verwenden, der nicht threadsicher verwendet wird, sodass sie für meine Verwendung ungeeignet sind :(

Welche anderen Optionen habe ich für eine effiziente Speicherverwaltung von so kleinen Objekten?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage