वास्तव में यह बताने का एकमात्र तरीका है कि कौन सा मेमोरी आवंटक आपके आवेदन के लिए सही है, कुछ प्रयास करना है। उल्लिखित सभी आवंटकों को स्मार्ट लोगों द्वारा लिखा गया था और दूसरों को एक विशेष माइक्रोबेंमार्क या किसी अन्य पर हराया जाएगा। यदि आपका पूरा आवेदन पूरे दिन करता है तो थ्रेड ए में एक 8 बाइट खंड मॉलोक होता है और इसे थ्रेड बी में मुक्त करता है, और किसी भी चीज़ को संभालने की आवश्यकता नहीं होती है, तो आप शायद एक मेमोरी आवंटक लिख सकते हैं जो पैंट को किसी भी से हटा देता है अब तक सूचीबद्ध हैं। यह बहुत अधिक के लिए बहुत उपयोगी नहीं होगा। :)
मुझे होर्ड का उपयोग करके कुछ अनुभव है जहां मैं काम करता हूं (पर्याप्त है कि हालिया 3.8 रिलीज में संबोधित अधिक अस्पष्ट बगों में से एक उस अनुभव के परिणामस्वरूप पाया गया था)।यह एक बहुत अच्छा आवंटक है - लेकिन आपके लिए कितना अच्छा है, आपके वर्कलोड पर निर्भर करता है। और आपको अपने कोड को जीपीएल किए बिना वाणिज्यिक परियोजना में इसका उपयोग करने के लिए होर्ड (हालांकि यह बहुत महंगा नहीं है) के लिए भुगतान करना होगा।
बहुत थोड़ी देर के लिए पीटीएमएलओसी 2 ग्लिबैक के मॉलोक के पीछे आवंटक रहा है, और इसलिए यह अविश्वसनीय रूप से व्यापक रूप से उपयोग और परीक्षण किया जाता है। यदि सभी चीजों के ऊपर स्थिरता महत्वपूर्ण है, तो यह एक अच्छी पसंद हो सकती है, लेकिन आपने इसे अपनी सूची में उल्लेख नहीं किया है, इसलिए मुझे लगता है कि यह बाहर है। कुछ वर्कलोड के लिए, यह भयानक है - लेकिन यह किसी भी सामान्य उद्देश्य मॉलोक के बारे में भी सच है।
यदि आप इसके लिए भुगतान करना चाहते हैं (और कीमत मेरे अनुभव में उचित है), SmartHeap SMP भी एक अच्छा विकल्प है। उल्लिखित अधिकांश अन्य आवंटकों को ड्रॉप-इन मॉलोक/मुफ्त नए/हटाए गए प्रतिस्थापन के रूप में डिज़ाइन किया गया है जो LD_PRELOAD'd हो सकते हैं। SmartHeap का भी इस तरह उपयोग किया जा सकता है, लेकिन इसमें एक संपूर्ण आवंटन-संबंधित API भी शामिल है जो आपको अपने आवंटकों को आपके दिल की सामग्री में सुदृढ़ करने देता है। परीक्षणों में हमने (फिर से, किसी विशेष एप्लिकेशन के लिए बहुत विशिष्ट) किया है, स्मार्टहेप ड्रॉप-इन मॉलोक प्रतिस्थापन के रूप में कार्य करते समय प्रदर्शन के लिए होर्ड के समान था; दोनों के बीच असली अंतर अनुकूलन की डिग्री है। आप बेहतर प्रदर्शन कर सकते हैं कम सामान्य उद्देश्य के लिए आपको अपने आवंटक की आवश्यकता है।
और आपके उपयोग के मामले के आधार पर, एक सामान्य उद्देश्य बहुप्रचारित आवंटक ऐसा नहीं हो सकता है जिसे आप उपयोग करना चाहते हैं; यदि आप लगातार & फ्रीिंग ऑब्जेक्ट्स हैं जो सभी एक ही आकार के हैं, तो आप केवल एक साधारण स्लैब आवंटक लिखना चाहेंगे। स्लैब आवंटन का उपयोग लिनक्स कर्नेल में कई स्थानों पर किया जाता है जो उस वर्णन में फिट होते हैं। (मैं आपको कुछ और उपयोगी लिंक दूंगा, लेकिन मैं एक "नया उपयोगकर्ता" हूं और स्टैक ओवरफ्लो ने फैसला किया है कि नए उपयोगकर्ताओं को भी एक ही जवाब में मददगार नहीं है। Google काफी अच्छी तरह से मदद कर सकता है, हालांकि ।)
क्या विशिष्ट समस्या (रों) आप वर्तमान डिफ़ॉल्ट ढेर प्रबंधक आपके द्वारा प्रयोग किए हल करने की कोशिश कर रहे हैं? और, वह कौन सा है? –
अपने एप्लिकेशन में यह जांचने का प्रयास करें कि क्या आप थ्रेड-स्थानीय स्टोरेज का उपयोग करके प्रदर्शन में सुधार कर सकते हैं। यदि ऐसा करने की संभावना है, तो लाभ बहुमत वाले आवंटक का उपयोग करने से बेहतर हो सकता है। – trshiv