मान लीजिए कि दो धागे हैं, जो एक-दूसरे को डेटा संदेश भेजते हुए अतुल्यकालिक संचार करते हैं। प्रत्येक थ्रेड में किसी प्रकार की संदेश कतार होती है।
मेरा प्रश्न बहुत निम्न स्तर का है: स्मृति के प्रबंधन के लिए सबसे कुशल तरीका क्या होने की उम्मीद की जा सकती है? मैं कई समाधानों के बारे में सोच सकता हूं:
- प्रेषक द्वारा वस्तु बनाता है
new
। रिसीवर कॉलdelete
। - मेमोरी पूलिंग (प्रेषक को मेमोरी वापस ट्रांसफर करने के लिए)
- कचरा संग्रह (जैसे, बोहम जीसी)
- (यदि वस्तुएं काफी छोटी हैं) पूरी तरह से ढेर आवंटन से बचने के लिए मूल्य से कॉपी करें
1) सबसे स्पष्ट समाधान है, इसलिए मैं इसे एक प्रोटोटाइप के लिए उपयोग करूँगा। संभावना है कि यह पहले से ही काफी अच्छा है। लेकिन मेरी विशिष्ट समस्या से स्वतंत्र, मुझे आश्चर्य है कि यदि आप प्रदर्शन के लिए अनुकूलन कर रहे हैं तो कौन सी तकनीक सबसे अधिक आशाजनक है।
मुझे उम्मीद है कि पूलिंग सैद्धांतिक रूप से सबसे अच्छी होगी, खासकर क्योंकि आप थ्रेड्स के बीच जानकारी के प्रवाह के बारे में अतिरिक्त ज्ञान का उपयोग कर सकते हैं। हालांकि, मुझे डर है कि सही होना भी सबसे मुश्किल है। ट्यूनिंग के बहुत सारे ... :(
कचरा संग्रह को बाद में (समाधान 1 के बाद) जोड़ना काफी आसान होना चाहिए, और मुझे उम्मीद है कि यह बहुत अच्छा प्रदर्शन करेगा। तो, मुझे लगता है कि यह सबसे व्यावहारिक समाधान है अगर 1) बहुत अक्षम हो जाता है।
यदि ऑब्जेक्ट छोटे और सरल हैं, तो मूल्य द्वारा प्रतिलिपि सबसे तेज़ हो सकती है। हालांकि, मुझे डर है कि यह समर्थित संदेशों के कार्यान्वयन पर अनावश्यक सीमाओं को बाध्य करता है, इसलिए मैं इससे बचना चाहता हूं।