জাভাস্ক্রিপ্টে গারবেজ কালেকশন কম রেখে কোড করা

গারবেজ কালেকশন যেকোন প্রকার কোড লিখার জন্যে একটা প্রবলেমের বিষয় কারণ এতে মেমোরী লস হয় যা কাম্য নয়। এখনকার কম্পিউটারে যতই মেমোরী থাকুক বা কম্পাইলারগুলি যতই গারবেজ কালেক্ট করুক, সমস্যা থেকেই যাবে। জাভাস্ক্রিপ্টও এর থেকে ব্যতিক্রম নয়। নিচে  লিংক থেকে পাওয়া কিছু টেকনিক শেয়ার করা হলো:

  1. সর্বপ্রথমে, সবচেয়ে সুস্পষ্টরূপে, new কিওয়ার্ড বন্টন ইঙ্গিত করে, যেমন: new foo (). যেখানে সম্ভব, প্রারম্ভকালে অবজেক্ট তৈরি করার চেষ্টা করুন, এবং কেবল যতক্ষণ সম্ভব একই অবজেক্টের পুনরায় ব্যবহার করুন
  2. অপেক্ষাকৃত কম সুস্পষ্ট সাধারণ ব্যবহারের জন্য, তিনটি নতুন সিনট্যাক্স শর্টকাট আছে:
    {} (নতুন অবজেক্ট তৈরি)
    [] (একটি নতুন অ্যারে নির্মাণ)
    function () {... } (নতুন একটি ফাংশন তৈরী করে, যেটি সর্বদাই গারবেজ কালেক্টেড)
  3. আপনি আসলে একটি বিদ্যমান অবজেক্টের পুনঃব্যবহার করতে পারেন
    // remove all own properties on obj,
    effectively reverting it to a new object
    cr.wipe = function (obj)
    {
    	for (var p in obj)
    	{
    		if (obj.hasOwnProperty(p))
    			delete obj[p];
    	}
    };
  4. setTimeOut জাতীয় ফাংশনগুলি বহুবার নতুন অবজেক্ট তৈরী করতে পারে, সেটা এড়ানো যেতে পারে যদি ফাংশনটিকে আগেই সেভ করে রাখা হয়

    Bad:

    setTimeout((function (self) { return function () { self.tick(); }; })(this), 16);

    Good:

    // at startup
    this.tickFunc = (function (self) { return function () { self.tick(); }; })(this);
    // in the tick() function
    setTimeout(this.tickFunc, 16);

***
http://www.scirra.com/blog/76/how-to-write-low-garbage-real-time-javascript লিংক থেকে গুগল ট্রান্সলেটর দিয়ে বাংলা ট্রান্সলেটেড লেখাকে এডিট করে (গুগল ট্রান্সলেটরে) প্রকাশিত। এভাবে সামনে চেষ্টা করবো গুগল ট্রান্সলেটে অবদান রাখতে

Leave a Reply

Your email address will not be published. Required fields are marked *