2010-04-03 11 views
5

Welche Allokatoren sind für die Verwendung mit STL verfügbar, wenn es um kleine Objekte geht. Ich habe bereits versucht, mit Pool-Allokatoren von Boost zu spielen, aber keine Leistungsverbesserung (tatsächlich gab es in einigen Fällen eine erhebliche Verschlechterung).C++ STL-konforme Allocatoren

Antwort

3

Sie haben nicht gesagt, welchen Compiler Sie verwenden, aber es kommt wahrscheinlich mit einer Reihe von vorgefertigten Zuordnern. Dies ist auf einem Mac mit gcc 4.2.1:

~$ find /usr/include/c++/4.2.1/ -name "*allocator*" 
/usr/include/c++/4.2.1/bits/allocator.h 
/usr/include/c++/4.2.1/ext/array_allocator.h 
/usr/include/c++/4.2.1/ext/bitmap_allocator.h 
/usr/include/c++/4.2.1/ext/debug_allocator.h 
/usr/include/c++/4.2.1/ext/malloc_allocator.h 
/usr/include/c++/4.2.1/ext/mt_allocator.h 
/usr/include/c++/4.2.1/ext/new_allocator.h 
/usr/include/c++/4.2.1/ext/pool_allocator.h 
/usr/include/c++/4.2.1/ext/throw_allocator.h 

Hier ist auch ein Link zu BitMagic Projektseite dass die Gespräche über wie Sie Ihre eigenen zu bauen. Überprüfen Sie auch kleine Objektzuordnung in der Loki library (und die book zu).

1

Die Microsoft Visual C++ - Standardbibliothekimplementierung stellt several proprietary allocators für knotenbasierte Container bereit (mindestens ab dem bald erscheinenden Visual Studio 2010).

1

Sie benötigen einen Zuordner, der für Ihre spezifischen Anforderungen geeignet ist. Der allgemeine STL-Allokator ist für die große Vielfalt der Umstände am besten geeignet, und wenn Sie einen neuen Allokator benötigen, müssen Sie Ihre spezifischen Anforderungen profilieren und verstehen. Sie müssen genauer festlegen, in welchen Container Sie diese Objekte legen werden.