2010-10-07 5 views
5

मैंने सुना है कि जीसीसी के हाल के संस्करण फ़ंक्शन पॉइंटर्स के माध्यम से सीधे कॉल करने के लिए कॉल को परिवर्तित करने में बहुत अच्छे हैं। हालांकि, मुझे वेब पर इसके बारे में कुछ भी नहीं मिल रहा है या जीसीसी के स्रोत कोड के माध्यम से त्वरित रूप से नहीं दिख रहा है। क्या किसी को पता है कि यह वास्तव में सच है और यदि हां, तो यह करने के लिए यह क्या एल्गोरिदम उपयोग करता है?फ़ंक्शन पॉइंटर्स के माध्यम से सीधे कॉल करने के लिए कॉल को कन्वर्ट करने के लिए जीसीसी किस एल्गोरिदम का उपयोग करता है?

+0

मैं, जीसीसी के अंदरूनी कामकाज से परिचित नहीं हूँ, लेकिन सामान्य तौर पर, अगर एक संकलक यह साबित कर सकता है कि फ़ंक्शन पॉइंटर के पास केवल कुछ कॉल साइट पर एक विशेष मान हो सकता है, फिर उस कॉल को फ़ंक्शन पॉइंटर के माध्यम से अप्रत्यक्ष कॉल के बजाय विशिष्ट पॉइंटर मान पर प्रत्यक्ष कॉल के रूप में एन्कोड किया जा सकता है। –

उत्तर

0

यह मूल्य प्रसार का एक रूप है। यदि मैं साबित कर सकता हूं कि ऑब्जेक्ट पॉइंटर पी (वर्चुअल कैल्स में) हमेशा किसी विशेष कंक्रीट क्लास की ऑब्जेक्ट को इंगित करता है, तो मैं उस वर्ग के सदस्य फ़ंक्शंस को सीधे कॉल कर सकता हूं। यदि नहीं, तो मुझे vtable से गुज़रना होगा।

1

आपको यह लेख दिलचस्प लगेगा। यह दिनांकित 2005 है, और मुझे यकीन है कि अगर 'हाल ही' पर्याप्त नहीं कर रहा हूँ, लेकिन यह व्यापक विषय के साथ सौदों:

http://www.codeproject.com/KB/cpp/FastDelegate.aspx

संबंधित मुद्दे

 संबंधित मुद्दे