जब हाई-परफॉर्मेंस एप्लिकेशन जैसे वीडियो गेम्स कार्यक्रमित करते हैं, तो डेवलपर्स तेज़ कोड लिखने के लिए ट्रिक्स ढूंढते हैं जो सीमित संसाधनों का अधिकतम उपयोग करते हैं। चर मेमोरी की आवश्यकता वाले परफॉर्मेंस-क्रिटिकल कोड के लिए मेमोरी आवंटन महत्वपूर्ण है। एक "बम्प अलोकेटर" या स्टैक अलोकेटर इसे इस प्रकार अनुकूलित करता है कि आवंटन एक साधारण पूर्णांक जोड़ के रूप में माना जाता है और डीवानल में एक और सस्ता पूर्णांक असाइनमेंट। लगभग 2010 में, जबकि Surreal Software में रद्द किए गए प्रोजेक्ट "This is Vegas" पर काम कर रहे थे, एनीमेशन प्रोग्रामिंग ने एनीमेशन ब्लेंडिंग के लिए बारंबार अस्थायी आवंटनों का सामना किया। इन आवंटनों का अस्तित्व केवल हर फ्रेम में थोड़े समय तक सीमित था और यह निर्भर करता था कि कौन से पात्र स energetic थे, जो कैमरा फ्रस्टम द्वारा निर्धारित किया गया था। अलोकेटर प्रोफाइलिंग में एक गर्म स्पॉट दिखाई दिया। समाधान में एक स्टैक अलोकेटर को लागू करना शामिल था जहां आवंटन केवल एक पूर्णांक जोड़ है, और मेमोरी को मुक्त करना एक साधारण पूर्णांक असाइनमेंट है। एक निश्चित ब्लॉक (उदाहरण के लिए, 1MB) आवंटित करके और "tos" (टॉप ऑफ़ स्टैक) वेरिएबल को बनाए रखकर, मेमोरी प्रबंधन लगभग तुरंत हो गया। परिणाम एक महत्वपूर्ण प्रदर्शन सुधार था, जिसमें प्रोफाइलर्स में आवंटन का समय मापा जा सकता था। एक प्रमुख सीमाएं है कि यह अलोकेटर स्वचालित रूप से डिस्ट्रक्टर को कॉल नहीं करता; जबकि प्लेसमेंट न्यू कंस्ट्रक्टर को संभाल सकता है, डिस्ट्रक्टर प्रबंधन मैन्युअल और त्रुटि-प्रवण है। इसके अतिरिक्त, यदि "tos" वेरिएबल परमाणु जोड़ का उपयोग करता है, तो मल्टी-थ्रेडेड वातावरण में स्टैक अलोकेटर उत्कृष्ट प्रदर्शन करते हैं, जो कई थ्रेड्स को समान समूह से आवंटित करने देता है, CPU fork/join स्थितियों या GPU एल्गोरिदम में लाभदायक। आंशिक डीवानल भी संभव हैं, रिकर्सिव प्रक्रियाओं की शुरुआत में "tos" स्थिति याद करके और पूरा होने पर उसे रीसेट करके। यह तकनीक गेम फ्रेम के दौरान अस्थायी मेमोरी की जरूरतों के लिए उल्लेखनीय गति के लाभ प्रदान करती है।
स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित