অপ্টিমাইজেশন
এম্বেড থাকা সিস্টেমগুলির জন্য নিম্ন-স্তরের প্রোগ্রামিং কম্পিউটার এবং সেল ফোনের মতো সাধারণ উদ্দেশ্য ডিভাইসের জন্য প্রোগ্রামিং থেকে একেবারেই আলাদা। দক্ষতা (গতি এবং স্থানের দিক দিয়ে) অনেক বেশি গুরুত্বপূর্ণ কারণ সংস্থানগুলি একটি প্রিমিয়ামে। এর অর্থ হ'ল আপনি যদি খুব কম জায়গা চালিয়ে যান তবে আপনার কোডের কোন অংশটি আপনি অপ্টিমাইজ করতে পারবেন তা দেখা।
প্রোগ্রাম স্পেস (ফ্ল্যাশ) ব্যবহার হ্রাস করার ক্ষেত্রে, আপনি যদি অনভিজ্ঞ হন বা কোডটি ডেস্কটপ কম্পিউটারগুলির জন্য প্রোগ্রামিংয়ের ক্ষেত্রে আরও বেশি অভ্যস্ত হন তবে সেই দক্ষতার প্রয়োজন হয় না এমন কোডের আকারটি অনুকূলকরণ করা বেশ কঠিন হতে পারে। দুর্ভাগ্যক্রমে, কোনও 'ম্যাজিক বুলেট' পদ্ধতি নেই যা সমস্ত পরিস্থিতিতে কার্যকর হবে, যদিও আপনার স্কেচটি আসলে কী প্রয়োজন তা গুরুত্ব সহকারে বিবেচনা করলে এটি সহায়তা করে । যদি কোনও বৈশিষ্ট্যের প্রয়োজন না হয় তবে এটি ব্যবহার করে নিন।
কখনও কখনও এটি আপনার কোডের একাধিক অংশ একই (বা খুব অনুরূপ) এটি সনাক্ত করতেও সহায়ক। আপনি এগুলি পুনরায় ব্যবহারযোগ্য ফাংশনগুলিতে ঘনীভূত করতে সক্ষম হতে পারেন যা একাধিক স্থান থেকে কল করা যেতে পারে। যাইহোক, সচেতন যে কখনও কখনও কোড করতে চেষ্টা হতে খুব পুনর্ব্যবহারযোগ্য আসলে এটা আরো বাগাড়ম্বরপূর্ণ উপার্জন শেষ পর্যন্ত। অনুশীলনের সাথে আসতে প্রবণতা পোড়ানোর পক্ষে এটি একটি জটিল ব্যালেন্স। কোড পরিবর্তনগুলি সংকলক আউটপুটকে কীভাবে প্রভাবিত করে তা দেখার জন্য কিছু সময় ব্যয় করা।
রানটাইম ডেটা (এসআরএএম) অপ্টিমাইজেশন যখন আপনি এটি ব্যবহার করেন তখন কিছুটা সহজ হতে থাকে। শিক্ষানবিস প্রোগ্রামারদের জন্য একটি খুব সাধারণ ক্ষতি খুব বেশি বিশ্বব্যাপী ডেটা ব্যবহার করছে। বিশ্বব্যাপী স্কোলে ঘোষিত যে কোনও কিছুই স্কেচের পুরো জীবনকালের জন্য উপস্থিত থাকবে এবং এটি সর্বদা প্রয়োজন হয় না। যদি কোনও ভেরিয়েবলটি কেবল একটি ফাংশনের অভ্যন্তরে ব্যবহৃত হয় এবং কলগুলির মধ্যে এটির অবিচল থাকার প্রয়োজন হয় না, তবে এটিকে স্থানীয় পরিবর্তনশীল করে তুলুন। যদি কোনও মানটি যদি ফাংশনগুলির মধ্যে ভাগ করে নেওয়া প্রয়োজন, তবে আপনি বিশ্বব্যাপী না করে পরামিতি হিসাবে এটি পাস করতে পারেন কিনা তা বিবেচনা করুন। আপনি যখন সত্যই এটি প্রয়োজন তখন আপনি কেবল সেই পরিবর্তনশীলগুলির জন্য এসআরএএম ব্যবহার করবেন।
এসআরএএম ব্যবহারের জন্য আরেকটি হত্যাকারী হ'ল পাঠ্য প্রক্রিয়াজাতকরণ (উদাহরণস্বরূপ String
ক্লাস ব্যবহার করে )। সাধারণভাবে বলতে গেলে, সম্ভব হলে আপনার স্ট্রিং অপারেশন করা উচিত নয়। তারা বিশাল মেমরি হোগ হয়। উদাহরণস্বরূপ, আপনি যদি সিরিয়ালটিতে প্রচুর পাঠ্য আউটপুট Serial.print()
করে থাকেন তবে স্ট্রিং কনক্যাটেনশন ব্যবহার না করে একাধিক কল ব্যবহার করুন। আপনার কোডে স্ট্রিং লিটারেলের সংখ্যা যদি সম্ভব হয় তবে হ্রাস করার চেষ্টা করুন।
পাশাপাশি সম্ভব হলে পুনরাবৃত্তি এড়িয়ে চলুন। প্রতিবার পুনরাবৃত্তি কল করার সময় এটি স্ট্যাকটিকে আরও গভীরতর করে তোলে। পরিবর্তে আপনার পুনরাবৃত্ত ফাংশন পুনরাবৃত্তি।
EEPROM ব্যবহার করুন EEPROM
এমন জিনিসগুলির দীর্ঘমেয়াদী সঞ্চয় করার জন্য ব্যবহৃত হয় যা কেবলমাত্র মাঝে মধ্যে পরিবর্তিত হয়। আপনার যদি বড় তালিকাগুলি বা স্থির ডেটার সন্ধানের টেবিলগুলি ব্যবহার করতে হয়, তবে এটি আগে থেকে EEPROM এ সঞ্চয় করার বিবেচনা করুন এবং যখন প্রয়োজন হবে তখনই আপনাকে টেনে আনুন।
স্পষ্টতই EEPROM যদিও আকার এবং গতিতে বেশ সীমাবদ্ধ, এবং এতে সীমিত সংখ্যক লেখার চক্র রয়েছে। এটি ডেটা সীমাবদ্ধতার দুর্দান্ত সমাধান নয়, তবে এটি ফ্ল্যাশ বা এসআরএএম-এর বোঝা কমিয়ে দেওয়ার জন্য যথেষ্ট হতে পারে। অনুরূপ বাহ্যিক স্টোরেজ যেমন একটি এসডি কার্ডের সাথে ইন্টারফেস করাও বেশ সম্ভব।
সম্প্রসারণ
আপনি যদি অন্য সমস্ত বিকল্প নিঃশেষ করে ফেলে থাকেন তবে প্রসারণের সম্ভাবনা থাকতে পারে। দুর্ভাগ্যক্রমে, প্রোগ্রামের স্থান বাড়ানোর জন্য ফ্ল্যাশ মেমরির প্রসারিত করা সম্ভব নয়। তবে এসআরএএম প্রসারিত করা সম্ভব। এর অর্থ আপনি বর্ধিত ডাটা আকার ব্যয়ে কোডের আকার হ্রাস করতে আপনার স্কেচটি রিফ্যাক্টর করতে সক্ষম হতে পারেন।
আরও এসআরএএম পাওয়া আসলে মোটামুটি সোজা is একটি বিকল্প হ'ল এক বা একাধিক 23 কে 256 চিপ ব্যবহার করা । এগুলিকে এসপিআই এর মাধ্যমে অ্যাক্সেস করা হয় এবং সেগুলি ব্যবহার করতে আপনাকে সহায়তা করার জন্য স্পিআরাম লাইব্রেরি রয়েছে । তারা সাবধান হন যে তারা 5V নয় 3.3V এ কাজ করে !
আপনি যদি মেগা ব্যবহার করছেন তবে আপনি বিকল্পভাবে ল্যাঙ্গরজিয়াম পয়েন্ট বা রাগড সার্কিট থেকে এসআরএএম সম্প্রসারণ শিল্ড পেতে পারেন ।