2012-10-19 20 views
6

के स्टार्टअप समय में सुधार हुआ है मैंने मैटलैब स्टैंडअलोन एक्सई संकलित किया है जिसे मैं किसी भी कंप्यूटर पर चला सकता हूं जिसमें MATLAB कंपाइलर रनटाइम स्थापित है।matlab निष्पादन योग्य

हालांकि एक्सई शुरू करने से 20-30 सेकंड लगते हैं!

मैं समय को सटीक और सबसे महत्वपूर्ण कैसे माप सकता हूं - मैं इसे 1-2 सेकंड तक कैसे कम कर सकता हूं।

+0

मुझे नहीं लगता कि आप कर सकते हैं। लेकिन मैं निश्चित रूप से एक अलग जवाब देखना पसंद करेंगे .. – angainor

+0

एमसीआर शुरू करने के साथ शुरू होने वाला स्टार्ट-अप समय (मेरे अनुभव में) है। मैंने पहले इस समस्या को देखा है और इसे तेज करने के तरीके से कभी नहीं आया (वास्तव में मैं सहमत हूं कि मैं सहमत हूं)। हालांकि, एक बिंदु नोट: यदि आप एक पंक्ति में कई स्टैंडअलोन एक्सई कहते हैं, तो स्टार्ट-अप टाइम (फिर से मेरे अनुभव में) दूसरे कॉल से कम होना चाहिए। शायद कंप्यूटर के साथ रैम में प्रारंभिक एमसीआर रखने के लिए चालाक होने के साथ कुछ करना है। –

+0

क्या आपका मतलब है कि तैनाती/रीबूट के बाद पहली बार धीमा है, या हर बार? –

उत्तर

5

यह Yair Altman's blog से बाहर ले जाया जाता है:

एक छप आवरण आवेदन तैनात (संकलित) मैटलैब आवेदनों की धीमी स्टार्टअप के दर्द के बहुत कम हो सकता है। A Splash window solution can be found here। हालांकि इस तरह के एक स्पलैश रैपर वास्तव में उपयोगी है, लेकिन MCR_CACHE_ROOT पर्यावरण परिवर्तक का उपयोग करके संकलित ऐप के स्टार्टअप की वास्तविक गति को प्राप्त करना भी संभव हो सकता है।

आम तौर पर, एमसीआर और स्टैंड-अलोन निष्पादन योग्य उपयोगकर्ता के temp dir में प्रत्येक स्टार्टअप पर अनपॅक किया जाता है, और उपयोगकर्ता लॉग आउट होने पर हटा दिया जाता है। जाहिर है, जब MCR_CACHE_ROOT पर्यावरण चर सेट किया गया है, तो इन फ़ाइलों को केवल एक बार अनपॅक किया जाता है और बाद में पुन: उपयोग के लिए रखा जाता है। यदि यह रिपोर्ट वास्तव में सच है, तो यह बाद में आमंत्रण में संकलित अनुप्रयोग के स्टार्टअप समय को काफी तेज कर सकती है।

लिनक्स पर:

export MCR_CACHE_ROOT=/tmp/mcr_cache_root_$USER # local to host 
mkdir -p @MCR_CACHE_ROOT 
./myExecutable 

विंडोज पर:

REM set MCR_CACHE_ROOT=%TEMP% 
set MCR_CACHE_ROOT="C:\Documents and Settings\Yair\Matlab Cache\" 
myExecutable.exe 

वहाँ भी यदि आवश्यक हो तो विंडोज पर स्थायी रूप से इस env चर सेट करने के लिए तरीके हैं ...

स्थापना MCR_CACHE_ROOT विशेष रूप से महत्वपूर्ण है नेटवर्क (एनएफएस) स्थान से निष्पादन योग्य चलते समय, क्योंकि नेटवर्क स्थान पर अनपॅकिंग काफी धीमी हो सकती है। यदि निष्पादन योग्य विभिन्न मशीनों पर समानांतर में चलाया जाता है (उदाहरण के लिए, एक कंप्यूटर क्लस्टर समानांतर प्रोग्राम चला रहा है), तो यह cause lock-outs भी हो सकता है जब विभिन्न क्लस्टर एक ही नेटवर्क स्थान तक पहुंचने का प्रयास करते हैं। दोनों मामलों में, समाधान एक स्थानीय फ़ोल्डर (उदा।,/Tmp या% TEMP%) में MCR_CACHE_ROOT सेट करना है। यदि आप निकाली गई फ़ाइलों को फिर से उपयोग करने की योजना बना रहे हैं, तो शायद आपको निकाली गई फ़ाइलों को हटा नहीं देना चाहिए बल्कि उनका पुन: उपयोग करना चाहिए। अन्यथा, निष्पादन योग्य समाप्त होने के बाद बस अस्थायी फ़ोल्डर को हटा दें।

export MCR_CACHE_ROOT=/tmp/mcr$RANDOM 
./matlab_executable 
rm -rf $MCR_CACHE_ROOT 

स्थापना MCR_CACHE_ROOT भी तैनात किए गए अनुप्रयोगों में अन्य प्रदर्शन बाधाओं का समाधान किया जा सकता है के रूप में एक MathWorks technical solution में विस्तार से बताया और एक संबंधित लेख here: निम्न उदाहरण में, $ यादृच्छिक एक पार्टी समारोह है कि एक यादृच्छिक संख्या देता है।

संबंधित मामले में, संकलित मैटलैब निष्पादन योग्य एमसीआर घटक कैश त्रुटि तक पहुंच नहीं सकता है, जब मैटलैब एमसीआर कैश निर्देशिका में अनुपलब्ध अनुमति अधिकारों के कारण नहीं लिख सकता है। इसे MCR_CACHE_ROOT को a non-existent directory पर सेट करने से बचा जा सकता है, या उस फ़ोल्डर में जिसमें वैश्विक एक्सेस अनुमतियां हैं (/ tmp या% TEMP% आमतौर पर ऐसे लिखने योग्य फ़ोल्डर्स होते हैं) - संबंधित पोस्ट here और here देखें।

0

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

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