2010-04-03 5 views
5

छोटे ऑब्जेक्ट्स से निपटने के दौरान एसटीएल के साथ उपयोग के लिए क्या आवंटक उपलब्ध हैं। मैंने बूस्ट से पूल आवंटकों के साथ पहले से ही खेलने की कोशिश की है, लेकिन इसमें कोई प्रदर्शन सुधार नहीं हुआ है (वास्तव में, कुछ मामलों में काफी गिरावट आई थी)।सी ++ एसटीएल-अनुरूप ऑलोकेटर्स

उत्तर

3

आपने यह नहीं कहा कि आप किस कंपाइलर का उपयोग करते हैं, लेकिन शायद यह पूर्व-निर्मित आवंटकों के समूह के साथ आता है। यह gcc 4.2.1 साथ Mac पर है:

~$ 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 

यहाँ भी BitMagic परियोजना पृष्ठ है कि कैसे अपने खुद के निर्माण करने के लिए के बारे में बात करने के लिए एक कड़ी है। Loki library (और book भी) में छोटे ऑब्जेक्ट आवंटक को भी देखें।

1

माइक्रोसॉफ्ट विजुअल सी ++ मानक लाइब्रेरी कार्यान्वयन नोड-आधारित कंटेनर के लिए several proprietary allocators प्रदान करता है (कम से कम जल्द से जल्द रिलीज विजुअल स्टूडियो 2010 के रूप में)।

1

आपको एक आवंटक की आवश्यकता है जो आपकी विशिष्ट आवश्यकताओं के लिए सही है। एसटीएल जेनेरिक आवंटक परिस्थितियों की विशाल विविधता के लिए सबसे अच्छा है, और यदि आप एक नया आवंटक चाहते हैं, तो आपको अपनी विशिष्ट आवश्यकताओं को प्रोफ़ाइल और समझने की आवश्यकता होगी। आपको इन ऑब्जेक्ट्स को रखने के लिए आप किस कंटेनर को जा रहे हैं, इसके बारे में अधिक विशिष्ट होना होगा।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^