2010-04-03 5 views
5

Quels allocateurs sont disponibles pour une utilisation avec STL lors de la manipulation de petits objets. J'ai déjà essayé de jouer avec des allocateurs de pool de Boost, mais je n'ai obtenu aucune amélioration des performances (en fait, dans certains cas, il y avait une dégradation considérable).Allocateurs conformes à la norme STL

Répondre

3

Vous n'avez pas dit quel compilateur vous utilisez, mais il est probablement livré avec un tas d'allocateurs prédéfinis. Ceci est sur un Mac avec 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 

est ici aussi un lien vers la page BitMagic du projet qui parle de la façon de construire votre propre. Vérifiez également l'allocateur d'objet petit dans le Loki library (et le book aussi).

1

L'implémentation de la bibliothèque standard Microsoft Visual C++ fournit several proprietary allocators pour les conteneurs basés sur des noeuds (au moins à partir de la prochaine version de Visual Studio 2010).

1

Vous avez besoin d'un allocateur adapté à vos besoins spécifiques. L'allocateur générique STL est le meilleur pour la grande variété de circonstances, et si vous voulez un nouvel allocateur, vous aurez besoin de profiler et de comprendre vos besoins spécifiques. Vous devrez être plus précis sur le conteneur dans lequel vous allez placer ces objets.