एक ऐ आवेदन मैं सी ++ में लिख रहा हूँ में,सी ++ में एआई अनुप्रयोग: वर्चुअल फ़ंक्शन कितने महंगा हैं? संभावित अनुकूलन क्या हैं?
- वहाँ बहुत संख्यात्मक गणना नहीं है
- जिसके लिए रन-टाइम बहुरूपता
- की जरूरत है बहुत बार संरचनाओं के बहुत कई बहुरूपी संरचनाओं बातचीत देखते हैं, गणना के दौरान
ऐसी स्थिति में, क्या कोई अनुकूलन तकनीक है? हालांकि, मुझे अभी एप्लिकेशन को अनुकूलित करने की परवाह नहीं है, प्रोजेक्ट के लिए जावा पर सी ++ चुनने का एक पहलू ऑप्टिमाइज़ करने के लिए अधिक लाभ उठाने और गैर-ऑब्जेक्ट उन्मुख तरीकों (टेम्पलेट्स, प्रक्रियाओं, अधिभार) का उपयोग करने में सक्षम होना था।
विशेष रूप से, आभासी कार्यों से संबंधित अनुकूलन तकनीक क्या हैं? आभासी कार्यों को स्मृति में आभासी तालिकाओं के माध्यम से लागू किया जाता है। क्या इन वर्चुअल टेबल को एल 2 कैश पर प्री-फ़ेच करने का कोई तरीका है (स्मृति/एल 2 कैश से लाने की लागत बढ़ रही है)?
इसके अलावा, सी ++ में डेटा इलाके तकनीक के लिए अच्छे संदर्भ हैं? ये तकनीक गणना के लिए आवश्यक एल 2 कैश में डेटा लाने के लिए प्रतीक्षा समय को कम कर देगी।
अद्यतन: Performance Penalty for Interface, Several Levels of Base Classes
अच्छा उदाहरण पर पाया जा सकता है। क्या किसी और को कॉल से ठीक पहले अनावश्यक स्मृति हिट से खुजली मिलती है जब एक mov ecx, eax यह करेगा? – plinth
एक आधुनिक सीपीयू पर mov पूरी तरह से पाइपलाइन हो सकता है। –
यह ध्यान रखना महत्वपूर्ण है कि वर्चुअल फ़ंक्शन को कॉल करने के निर्देश ओवरहेड कम से कम है कि वे अन्य तरीकों से प्रदर्शन को नकारात्मक रूप से प्रभावित कर सकते हैं। एक बात के लिए वे इनलाइनिंग और शाखा भविष्यवाणी जैसे कई अनुकूलन को रोकते हैं। दूसरे के लिए वे आई-कैश प्रदर्शन –