मैं ऐसी परिस्थिति में हूं जहां मेरे पास ऐसी गेम ऑब्जेक्ट्स हैं जिनमें वर्चुअल फ़ंक्शन अपडेट() है। बहुत सारी गेम ऑब्जेक्ट्स (वर्तमान में 7000 से थोड़ा अधिक) हैं और लूप कॉल उन सभी के लिए अपडेट (अन्य चीजों के साथ)। मेरे सहयोगी ने सुझाव दिया कि हमें वर्चुअल फ़ंक्शन को पूरी तरह से हटा देना चाहिए। जैसा कि आप कल्पना कर सकते हैं, यह बहुत से रिफैक्टरिंग लेगा।एक तंग लूप में वर्चुअल फ़ंक्शन की लागत
मैंने this answer देखा है लेकिन मेरे मामले में, प्रोफाइलिंग का मतलब है कि मुझे बहुत सारे कोड बदलना है। इसलिए इससे पहले कि मैंने शुरू करने के बारे में भी सोचा था, मैंने सोचा था कि मैं यहां इस राय के लिए पूछूंगा कि इस मामले में रिफैक्टरिंग इसके लायक है या नहीं।
ध्यान दें कि मैंने लूप के अन्य हिस्सों का प्रोफाइल किया है और उन हिस्सों को अनुकूलित करने की कोशिश कर रहा है जो सबसे लंबे समय तक ले रहे हैं। मुझे संदेह है कि इस मामले में वर्चुअल फ़ंक्शन कॉल कुछ है जिसके बारे में मुझे चिंता नहीं करनी चाहिए, लेकिन मैं तब तक सुनिश्चित नहीं हो सकता जब तक कि मैं प्रोफ़ाइल नहीं करता और जब तक मैं कोड बदल नहीं जाता तब तक मैं प्रोफ़ाइल नहीं कर सकता (जो बहुत कुछ है)। यह भी ध्यान रखें कि कुछ अद्यतन फ़ंक्शन बहुत छोटे होते हैं जबकि अन्य अधिक जटिल होते हैं।
EDIT: बहुत से जवाब हैं जो महान अंतर्दृष्टि देते हैं, इसलिए भविष्य में इस प्रश्न पर जो कोई भी ठोकर खाता है, वह सभी उत्तरों पर नज़र डालें, न कि केवल चयनित व्यक्ति।
आपके द्वारा प्रदान की गई जानकारी से, ऐसा लगता है कि यह प्रतिक्रिया करना कठिन या असंभव हो सकता है। कारण यह है कि कई अलग-अलग प्रकार के अपडेट() फ़ंक्शंस हैं। आप सभी को रिफैक्टरिंग द्वारा प्राप्त करने जा रहे हैं कि वर्चुअल फ़ंक्शन कॉल को स्विच-केस या if-statement द्वारा प्रतिस्थापित किया जाएगा, जो प्रदर्शन में बेहतर नहीं हैं। – tp1
ऑप्टिमाइज़ेशन के बारे में कुछ पूछने की हिम्मत कैसे करें! : पी ... सामान्य रूप से, -1 इस प्रकार के प्रश्नों के बिना क्यों समझाए। वैसे भी, उत्तर देने वाले हर किसी के लिए धन्यवाद। मुझे एक और राय के लिए जरूरी था, जो मुझे मिला। निश्चित नहीं है कि क्यों कुछ लोग हर चीज को दफनाने के लिए नरक हैं और कुछ भी है जो 'ऑप्टिमाइज़' – Samaursa
शब्द भी है। मैं अपने स्वयं के गेम इंजन पर काम कर रहा हूं, जो वर्तमान में लाइन मशीन के शीर्ष पर लगभग 10fps पर चलता है। सुनिश्चित नहीं है कि कहां देखना है, लेकिन मुझे पूछने से डर है। मेरे इंजन में मैं दो सूचियों का उपयोग कर रहा हूं, सभी ऑब्जेक्ट्स के लिए एक (जिस तरह से मेरे सिस्टम में लाइव ऑब्जेक्ट्स से अधिक है - टकराव एक ऑब्जेक्ट सक्रिय नहीं करते हैं) और एक लाइव ऑब्जेक्ट्स के लिए। – dascandy