मैं अपने सी ++ कोड से एक डीएलएल कोड करता हूं जो MATLAB में लिखा गया था। मैं एक अजीब प्रभाव का निरीक्षण करता हूं: पहली कॉल में अगली कॉल करने में अधिक समय लगता है। इसमें 3-4 गुना अधिक लगता है। क्या यह सामान्य है? क्या इसके साथ कुछ करना संभव है?मैटलैब डीएलएल को पहली कॉल क्यों अगली कॉल से ज्यादा समय लेती है?
उत्तर
हाँ सामान्य है, देरी MATLAB Runtime Compiler शुरू करने से होती है। यह MATLAB कोड को आपके द्वारा MATLAB के माध्यम से बनाए गए डीएलएल से चलाता है। शुरुआती स्टार्टअप को AFAIK से बचा नहीं जा सकता है, लेकिन जब आप बाद में "लागत" से बचने के लिए अपना आवेदन शुरू करते हैं तो आप डीएलएल को डमी कॉल जोड़ सकते हैं।
चूंकि प्रश्न लॉक है, इसलिए मैं इसे एक टिप्पणी के रूप में जोड़ूंगा। दो प्रकार की देरी होती है - पहली बार जब आप अपने कंप्यूटर को पहली बार * कभी * इस कंप्यूटर में चलाते हैं, तो ज़िप फ़ाइल निकाली जाती है और एमसीआर लॉन्च किया जाता है। दूसरा प्रकार तब होता है जब आप पहले से ही इस एप्लिकेशन को चला चुके हैं। फिर, केवल एमसीआर लोड हो गया है। –
मैंने सोचा था कि मैटलैब रनटाइम कंपाइलर शुरू करने में देरी mclInitialize आवेदन या
यदि मेरे पास कई डीएलएल में कई MATLAB फ़ंक्शन हैं, तो इसका मतलब यह है कि इस तरह की देरी प्रत्येक कार्य के लिए पहली कॉल पर होगी? – user1913557
आप अपने सी ++ कोड में कॉल कैसे कर रहे हैं? –
एक बिल्कुल बढ़िया सवाल है। शायद गैर-मैटलैब उपयोगकर्ताओं ने गलतफहमी के कारण इसे बंद कर दिया। –
मेरी समझ यह है कि इससे बचने का एकमात्र तरीका मैटलैब कोड को सी/सी ++ कोड में परिवर्तित करना है [मैटलैब कोडर] (http://www.mathworks.com.au/products/matlab-coder/index.html) और फिर इसे वहां से संकलित करें। जैसा कि @ नोमिनसिम बताता है, "संकलित" मैटलैब कोड वास्तव में संकलित नहीं होता है - इस विषय पर एक अच्छा SO उत्तर है [यहां] (http://stackoverflow.com/questions/8636267/matlab-code-after-compilation) –