2010-06-09 9 views
6

क्या आपके पास कॉलिंग कन्वेंशन फास्टकॉल का उपयोग करने के लिए कोई वास्तविक उपयोग केस है?कॉलिंग सम्मेलन फास्टकॉल का उपयोग करने के लिए कोई वास्तविक उपयोग केस?

धन्यवाद।

+0

स्पष्ट रूप से यह तेज़ है, और इसलिए बेहतर;)। – Domenic

+0

@luvieere संदर्भ आलेख देखें: यह तेज़ नहीं है ... :) – rkellerm

उत्तर

3

Here एक लेख है जो फास्टकॉल का उपयोग कब करना है। यह वास्तव में एक मामले को निर्दिष्ट करता है जब आप वास्तव में कोई विकल्प नहीं है, लेकिन यह उपयोग करने के लिए:

ऐसे TList के रूप में कुछ VCL कक्षाएं,, आप एक कॉलबैक फ़ंक्शन (TList के मामले में एक तरह दिनचर्या) निर्दिष्ट करने के लिए अनुमति देते हैं। आपको इस मामले में __fastcall कीवर्ड का भी उपयोग करना होगा, क्योंकि वीसीएल इसकी अपेक्षा करता है।

+0

धन्यवाद। एक साइड नोट के रूप में: अपने लेख से, "क्या __fastcall वास्तव में तेज़ है?" खंड: "मेरे परीक्षणों के साथ नीचे की रेखा यह थी कि रजिस्टर कॉलिंग सम्मेलन सी कॉलिंग सम्मेलन की तुलना में तेज़ नहीं था और ज्यादातर मामलों में धीमा था। माना जाता है कि समय में मतभेद कमजोर हैं लेकिन मैंने खुद को साबित किया कि यह होगा __fastcall के समर्थकों के लिए मुश्किल हो सकता है कि यह दावा करने के लिए कि पंजीकरण कॉलिंग सम्मेलन किसी अन्य " ..." से पहले तेज़ है, मैंने जो कहा है उसे दोहराने के लिए, मैं सलाह देता हूं कि जब तक यह विशेष रूप से आवश्यक न हो तब तक आप कभी भी __fastcall का उपयोग न करें ":) – rkellerm

5

__fastcall यदि संभव हो तो स्टैक के बजाय सीपीयू रजिस्टरों में फ़ंक्शन तर्कों को पारित करने का प्रयास करता है, जो तेज़ है।

यहाँ एक MSDN लेख __fastcall समझा बुला सम्मेलन के लिए एक लिंक है: http://msdn.microsoft.com/en-us/library/6xa169sk(VS.71).aspx

पहले दो DWORD या छोटे तर्क ECX में पारित कर रहे हैं और EDX रजिस्टरों; अन्य सभी तर्क दाएं से बाएं पास हुए हैं।

इसका मतलब है कि यह केवल पहले दो तर्कों के लिए काम करेगा और केवल तभी होगा जब वे < = 32 बिट्स हों।
आम तौर पर मैं कहूंगा, इस से किसी भी बड़े प्रदर्शन के फायदे की अपेक्षा न करें।

+1

सम्बन्ध। –

1

मेरे पास एक ऐसा मामला है जहां मैं इसे प्रभावी ढंग से उपयोग करता हूं - यह एक बहुत ही छोटा एएसएम रूटीन (3 निर्देश) है जो एक रजिस्टर में एक ही मूल्य का उपयोग करता है।

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

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