सामग्री
- कोड एक्झिक्यूशन वेळ प्रायोगिकरित्या कसे मापन करावे
- 1. आपल्या मायक्रोकंट्रोलरचे प्रोसेसिंग पॉवर आणि मेमरी आकार जाणून घ्या
- 2. कोड आकारात ऑप्टिमायझेशनसाठी व्हेरिएबल्सची निवड
- 3. कोड एक्झिक्यूशन वेळेत ऑप्टिमायझेशनसाठी व्हेरिएबल्सची निवड
- Ar. अंकगणित ऑपरेशन्स ऑप्टिमायझिंग
- 5. गहन गणनासाठी डीएसपी सक्षम मायक्रो नियंत्रक वापरा
- डीएसपी प्रोसेसर वेगवान कार्यान्वयन करण्याच्या सूचना नंतर एएलयू खालीलप्रमाणेः
- मायक्रोकंट्रोलरचे डीएसपी इंजिन वापरण्यासाठी हे आवश्यक आहेः
- 6. व्यत्ययांसह कार्य करा
- 7. सर्वोत्कृष्ट उपलब्ध कंपाईलर वापरा
- 8. सशर्त विधाने बुद्धिमत्तेने वापरा
- 9. इनलाइन कार्ये वापरा
- १०. घसरण झालेल्या पळवाटांचा वापर करा
- लपेटणे
लेखकाने आपला अंतिम वर्ष अभियांत्रिकी प्रकल्प डीएसपीक मायक्रो-कंट्रोलर्ससह पूर्ण केला, या उपकरणांमध्ये विस्तृत अंतर्दृष्टी प्राप्त केली.
मायक्रोकंट्रोलरच्या सी-भाषा कोडला काही प्रगत अनुप्रयोगांमध्ये ऑप्टिमायझेशनची आवश्यकता असू शकते. या कोड ऑप्टिमायझेशनचा उपयोग दोन महत्त्वपूर्ण गोष्टी कमी करण्यासाठी केला जातो:
- कोड आकारः मायक्रोकंट्रोलर मर्यादित डेटा आणि सूचना संचयित करू शकतात कारण त्यांच्या रॅमचा आकार मर्यादित आहे. म्हणून कोड ऑप्टिमाइझ करणे आवश्यक आहे, जेणेकरून उपलब्ध सूचना आणि डेटा मेमरीचा सर्वात कार्यक्षम मार्गाने वापर करता येईल.
- कोड एक्झिक्यूशन टाइम्स: मायक्रोकंट्रोलर अनुक्रमिक उपकरणे आहेत जी एका वेळी एक सूचना अंमलात आणतात. प्रत्येक विधानसभा सूचना स्वतः कार्यान्वित करण्यासाठी ठराविक संख्येने घड्याळ सायकल वापरतात. म्हणूनच कमीतकमी घड्याळ सायकल किंवा असेंब्ली निर्देशांमध्ये आवश्यक कार्य करते याची खात्री करण्यासाठी कोड अनुकूलित करणे आवश्यक आहे. कोड वापरणारे कमी घड्याळ चक्र करते, ते जलद गतीने चालते. याचा अर्थ असा की अनुप्रयोग अधिक वेगाने चालू शकतात कारण प्रक्रिया वेळ कमी केला जातो.
हा लेख सूक्ष्म-नियंत्रक कोड आकार आणि अंमलबजावणी वेळ कमी करण्यासाठी वापरले जाऊ शकते अशा टिपा आणि युक्त्या सादर करतो.
मायक्रोचिपचा एमप्लाबएक्स डेव्हलपमेंट आयडी वापरला जाईल तेथे उदाहरणे दाखवण्यासाठी वापरली जातील.
कोड एक्झिक्यूशन वेळ प्रायोगिकरित्या कसे मापन करावे
रीअल-टाईममध्ये आपला कोड प्रत्यक्षात किती वेळ घेते याची कल्पना मिळविण्यासाठी आपल्याला हे प्रयोगात्मकपणे मोजले जाणे आवश्यक आहे. कोड अंमलबजावणीची वेळ मोजण्यासाठी तर्कशास्त्र विश्लेषक सहजपणे वापरले जाऊ शकते आणि इच्छुकांनी ईमेलवर माझ्याकडून या प्रक्रियेबद्दल विचारपूस केली. या बाजूला:
- काही कंपाइलरमध्ये कोड वापरणार्या घड्याळ सायकल मोजण्याची क्षमता असते.
- काही डीबगर्स उदाहरणार्थ मायक्रोचिपमधील आयसीडी 3 स्टॉपवॉचद्वारे अंमलबजावणीचा वेळ थेट मोजू शकतात.
1. आपल्या मायक्रोकंट्रोलरचे प्रोसेसिंग पॉवर आणि मेमरी आकार जाणून घ्या
हे नेहमीच घड्याळ वारंवारता (मेगाहर्ट्झ) नसते जे मायक्रो-कंट्रोलरच्या प्रक्रियेच्या गतीचे वास्तविक चित्र देते, एक अधिक वास्तववादी उपाय म्हणजे एमआयपीएस (प्रति सेकंद मेगा निर्देश) किंवा एमसीयू एका सेकंदात अंमलात आणू शकणार्या सूचनांची संख्या.
एमसीयू सामान्यत: हाय-एंड श्रेणीतील 60-70 एमआयपीएस ते 20 एमआयपीएस 8-बिट एव्हीआर पर्यंत असतात. उच्च एमआयपीएस मायक्रो-कंट्रोलर नंतर कमी-एंड डिव्हाइसपेक्षा अधिक महाग असण्याची शक्यता आहे म्हणून येथे आपल्याकडे खर्च आणि प्रक्रिया गती दरम्यान व्यापार आहे.
मायक्रो-कंट्रोलर्सकडे डेटा आणि प्रोग्राम कोड संचयित करण्यासाठी स्वतंत्र मेमरी असते. या दोघांचा आकार डेटाशीटवरुन आढळू शकतो. आपला कोड बर्यापैकी मोठा असल्यास आपल्यास मोठ्या मेमरी आकारासह एमसीयूची आवश्यकता असू शकते.
2. कोड आकारात ऑप्टिमायझेशनसाठी व्हेरिएबल्सची निवड
मायक्रो-कंट्रोलर्सकडे मर्यादित डेटा मेमरी असते, सामान्यत: 1 ते 4 केबाइट्स असतात. या प्रकरणात संग्रहित होण्याच्या तारखेच्या अपेक्षित श्रेणीनुसार सर्वात योग्य चल प्रकार निवडणे शहाणपणाचे आहे. खालील सारणी या चलनांचा सारांश देते:
व्हेरिएबल प्रकार | बाइट मधील आकार | श्रेणी |
---|---|---|
बूल | 1 | केवळ 0 किंवा 1 |
चार | 1 | -128 ते 127 |
इंट | 2 | -32,768 ते 32,767 पर्यंत |
स्वाक्षरीकृत इंट | 2 | 0 ते 65,535 पर्यंत |
लांब | 4 | -2,147,483,648 ते 2,147,483,647 |
तरंगणे | 4 | अचूक 6 दशांश ठिकाणी |
दुप्पट | 8 | अचूक 15 दशांश ठिकाणी |
लांब दुहेरी | 10 | अचूक 19 दशांश ठिकाणी |
उदाहरणः
- जर दोन व्हेरिएबल्स एक्स आणि वाईड जोडले गेले असतील आणि त्याचा परिणाम झेडमध्ये संग्रहित केला जाईल परंतु झेडचे मूल्य 65,535 नंतर जास्त असेल तर झेड लाँग म्हणून घोषित केले जाऊ शकते आणि एक्स आणि वाईस स्वाक्षरीकृत म्हणून घोषित केले जाऊ शकते. इंट, एक्स आणि वाईचे मूल्य देखील नकारात्मक होणार नाहीत. हे डेटा मेमरीमधील 04 बाइटची बचत करेल जे अन्यथा सर्व व्हेरिएबल्स ला घोषित करायचे असते तर वापरलेले असते.
- एक्स आणि वाई दोन रूपे ज्यांची मूल्ये पूर्ण संख्येने असणे अपेक्षित आहे त्यांचे विभाजन केले जाईल, परंतु विभाजनाचा निकाल दशांश मिळू शकेल, त्यानंतर एक्स आणि वायट इंट घोषित केले जाईल आणि परिणामी फ्लोट किंवा डबल घोषित केले जाईल तंतोतंत आवश्यक.
मोठ्या संख्येने घटक असलेले अॅरे घोषित करताना डेटा प्रकारची निवड महत्त्वपूर्ण असू शकते.
3. कोड एक्झिक्यूशन वेळेत ऑप्टिमायझेशनसाठी व्हेरिएबल्सची निवड
- हे एक स्थापित सत्य आहे की फ्लोटिंग पॉईंट गणना निश्चित बिंदू गणनापेक्षा जास्त कालावधी घेते. दशांश मूल्य आवश्यक नसते तर फ्लोटिंग पॉईंट व्हेरिएबल वापरू नका. जिथे शक्य असेल तेथे स्वाक्षरी केलेल्या पूर्णांकांसह कार्य करा.
- स्थानिक व्हेरिएबल्स ग्लोबल व्हेरिएबल्सला प्राधान्य दिले जातात. जर एखाद्या फंक्शनमध्ये फक्त व्हेरिएबलचा वापर केला गेला असेल तर तो त्या फंक्शनमध्ये घोषित केला जाणे आवश्यक आहे कारण ग्लोबल व्हेरिएबल्समध्ये प्रवेश करणे स्थानिक व्हेरिएबल्सपेक्षा हळू आहे.
- 8-बिट एमसीयूमध्ये प्रवेश करण्यासाठी एक बाइट-आकारातील व्हेरिएबल वेगवान सापडेल आणि १ bit-बिट एमसीयू व्युत्पन्न पत्त्याच्या लांबीमुळे प्रवेश करण्यासाठी एक 2-बाइट व्हेरिएबल सहज सापडेल.
Ar. अंकगणित ऑपरेशन्स ऑप्टिमायझिंग
अंकगणित ऑपरेशन्स खालील प्रकारे अनुकूलित केल्या जाऊ शकतात.
- साइन किंवा इतर कोणत्याही त्रिकोमितीय कार्य किंवा इतर कोणत्याही ऑपरेशनचे मूल्यांकन करण्याऐवजी पूर्व-गणना केलेल्या मूल्यांच्या लुकअप सारण्या वापरा ज्याचा निकाल कोडमध्ये आधी माहित असू शकेल.
- जर एखादा साइन लूक-अप टेबल मेमरीमध्ये आधीपासून संग्रहित असेल तर अॅरे पॉईंटर 90 ० अंशांच्या पुढे जाऊन कोसाइनचे मूल्यांकन केले जाऊ शकते.
- चार अंकगणित क्रियांपैकी विभागणी आणि गुणाकार प्रक्रियेस सर्वात जास्त वेळ लागतो, सराव मध्ये तर फ्लोटिंग-पॉइंट व्हॅल्यूजच्या बाबतीत शेकडो मायक्रो सेकंदांच्या श्रेणीत असू शकतात.
- विभागणी आणि गुणाऐवजी बिट शिफ्ट सूचना वापरा. राईट शिफ्ट 3 इंस्ट्रक्शन 3 ने 2 ने भाग पाडते3 जेथे डावीकडील पाळीची सूचना 1 ने 2 ने गुणाकार करेल1.
5. गहन गणनासाठी डीएसपी सक्षम मायक्रो नियंत्रक वापरा
काही मायक्रो-कंट्रोलर्सचे डीएसपी प्रोसेसिंग युनिट असते आणि नंतर त्यांच्या आर्किटेक्चरमध्ये बनविलेले पारंपारिक एएलयू असते. हे डीएसपी इंजिन एएलयूमध्ये कमीतकमी घड्याळ सायकलमध्ये (बहुतेक प्रकरणांपैकी एक) बर्याच वेगाने वेगाने अंकगणित गणना करण्यास तयार आहे.
डीएसपी प्रोसेसर वेगवान कार्यान्वयन करण्याच्या सूचना नंतर एएलयू खालीलप्रमाणेः
- बिट शिफ्ट आणि फिरवा सूचना.
- गुणाकार, विभाग आणि इतर अंकगणित ऑपरेशन्स.
- साईन व इतर त्रिकोणमितीय कार्ये मूल्यांकन करीत आहे.
- सर्व डीएसपी ऑपरेशन्स जसे की एफएफटी, डीएफटी, कॉन्व्होल्यूशन आणि एफआयआर फिल्टरिंग.
मायक्रोकंट्रोलरचे डीएसपी इंजिन वापरण्यासाठी हे आवश्यक आहेः
- स्वतंत्र डीएसपी लायब्ररी प्रकल्पात समाविष्ट केल्या आहेत.
- कार्येची नावे सी-भाषेच्या प्रमाणित गणिताच्या ग्रंथालयापेक्षा भिन्न आहेत. या ग्रंथालये आणि कार्ये यांचे दस्तऐवजीकरण संबंधित उत्पादक वेबसाइट वरून मिळू शकेल.
- डीएसपी इंजिन भिन्न भिन्न प्रकार 'फ्रॅक्शनल' वापरते. डीएसपी लायब्ररी कार्य करण्यापूर्वी फ्रॅक्शनल टाइप व्हेरिएबल्स कसे वापरायचे ते शिका.
लक्षात घ्या की प्रमाणित गणित ग्रंथालयाची कार्ये डीएसपी इंजिनला चालना देणार नाहीत कारण त्यांचे ALU असेंब्ली निर्देशांमध्ये भाषांतर केले जाते.
6. व्यत्ययांसह कार्य करा
विशिष्ट कार्ये करण्यासाठी व्यत्यय वापरा जसेः
- एडीसी मूल्ये वाचत आहे.
- यूआरटीकडून पाठवित आहे आणि प्राप्त करीत आहे.
- पीडब्ल्यूएम कर्तव्य सायकल नोंदणी अद्ययावत करीत आहे.
- कॅन किंवा आय 2 सी संप्रेषण.
फंक्शन कॉल किंवा इनलाइन कोडद्वारे मुख्य शरीरात कार्य करण्याच्या तुलनेत व्यत्यय या कार्ये द्रुतपणे सेवा देईल.
व्यत्यय देखील आवश्यक असल्यास केवळ ट्रिगर करेल, मुख्य मुख्य कोडमध्ये कोड केल्यास, कोड (1) लूपच्या प्रत्येक पुनरावृत्तीमध्ये कार्यान्वित होईल.
7. सर्वोत्कृष्ट उपलब्ध कंपाईलर वापरा
योग्यरित्या कॉन्फिगर केले असल्यास कोड सी-भाषेपासून विधानसभा भाषेत अनुवादित करताना कंपाईलर वर चर्चा केलेल्या काही ऑप्टिमायझेशन स्वयंचलितपणे अंमलात आणू शकतात. आपल्या कंपाईलरमधील पर्यायांचे ऑप्टिमाइझिंग पहा आणि शक्य असल्यास कंपाइलर्सच्या व्यावसायिक आवृत्त्यांमध्ये श्रेणीसुधारित करा कारण ते अधिक शक्तिशाली कोड ऑप्टिमायझर आहेत.
8. सशर्त विधाने बुद्धिमत्तेने वापरा
- If-else स्टेटमेंट्सची मालिका वापरताना सर्वात संभाव्य स्थिती प्रथम ठेवते. अशा प्रकारे एमसीयूला खरी स्थिती सापडल्यानंतर त्या सर्व परिस्थितींमध्ये स्कॅन करण्याची आवश्यकता नाही.
- स्विच-केस स्टेटमेंट सामान्यत: if-else वेगवान असते.
- स्टेटमेंट्सच्या मालिकेच्या जागी नेस्टेड इफ-अन्य स्टेटमेंट्स वापरा. सर्वात वाईट स्टेटमेन्ट असलेल्या इफ-ब्लॉकला सर्वात वाईट स्थिती (शेवटच्या) स्थितीसाठी अनुकूल करण्यासाठी लहान उप-शाखांमध्ये विभागले जाऊ शकते.
9. इनलाइन कार्ये वापरा
कोडमध्ये फक्त एकदाच वापरली जाणारी कार्ये स्थिर म्हणून घोषित केली जाऊ शकतात. हे कंपाइलर ते कार्य इनलाइन फंक्शनमध्ये अनुकूलित करेल आणि म्हणून फंक्शन कॉलसाठी असेंब्ली कोडचे भाषांतर केले जाणार नाही.
- 'स्थिर' या कीवर्डचा वापर करुन एखादा फंक्शन इनलाइन घोषित केला जाऊ शकतो.
१०. घसरण झालेल्या पळवाटांचा वापर करा
वाढीव लूपच्या तुलनेत कमी झालेला लूप कमी असेंब्ली कोड तयार करेल.
कारण वर्धापन पळवाट मध्ये लूप निर्देशांक जास्तीत जास्त मूल्यापर्यंत पोहोचला की नाही हे तपासण्यासाठी प्रत्येक लूपमधील अधिकतम मूल्यासह लूप निर्देशांकांची तुलना करणे आवश्यक आहे. घटत्या पळवाटच्या उलट, या तुलनेची यापुढे आवश्यकता नाही कारण लूप इंडेक्सचा घटलेला परिणाम शून्यपर्यंत पोहोचल्यास एसआरईजीमध्ये शून्य ध्वज स्थापित करेल.
लूपला शंभर वेळा पुनरावृत्ती करावी लागेल हे लक्षात घेऊन लूपमधून एखादी सूचना कमी केल्याने शंभर वेळा कार्यान्वित होणे टाळले जाईल, जेव्हा लूपला बर्याच वेळा पुनरावृत्ती करावी लागते तेव्हा त्याचा प्रभाव अधिक महत्त्वपूर्ण होण्याची शक्यता असते.
लपेटणे
या टिपा उपयुक्त ठरू शकतात परंतु त्यांचे खरे अनुप्रयोग आणि सामर्थ्य प्रोग्रामरच्या कौशल्यावर आणि त्याच्या कोडवर असलेल्या कमांडवर अवलंबून असते. लक्षात ठेवा प्रोग्रामचा आकार नेहमीच अंमलबजावणीचा वेळ निश्चित करत नाही, काही सूचना जास्त घड्याळ सायकल वापरु शकतात तर इतर पुन्हा प्रोग्रामच्या कौशल्यांनी त्यांची भूमिका निभावली पाहिजे.
हा लेख अचूक आहे आणि लेखकांच्या सर्वोत्कृष्ट माहितीवर आहे. सामग्री केवळ माहितीच्या किंवा करमणुकीच्या उद्देशाने आहे आणि व्यवसाय, आर्थिक, कायदेशीर किंवा तांत्रिक बाबींमध्ये वैयक्तिक सल्ले किंवा व्यावसायिक सल्ल्याचा पर्याय घेत नाही.