আমি এই উত্তর দিয়ে একটি বিস্তৃত ছবি দেওয়ার চেষ্টা করি।
আমি সম্প্রতি ইস্যুটি পরীক্ষা না করা পর্যন্ত বন্ধনীগুলিতে নিম্নলিখিত চিন্তাভাবনাগুলি আমার বিশ্বাস ছিল :
[[ সি / সি ++ এর মতো নিম্ন স্তরের ভাষার ক্ষেত্রে , কোডটি সংকলিত হয় যাতে প্রসেসরের একটি বিশেষ শর্তযুক্ত জাম্প কমান্ড থাকে যখন ভেরিয়েবল শূন্য হয় (বা শূন্য নয়)।
এছাড়াও, আপনি যদি এই অত্যধিক অপ্টিমাইজেশানটির বিষয়ে চিন্তা করেন তবে আপনি তার পরিবর্তে যেতে পারেন , কারণ একক প্রসেসর কমান্ড যেখানে এর অর্থ ]]
++i
i++
++i
i++
j=i+1, i=j
সত্যিই দ্রুত লুপগুলি এটিকে তালিকাভুক্ত না করে করা যেতে পারে:
for(i=800000;i>0;--i)
do_it(i);
এটি চেয়ে ধীর হতে পারে
for(i=800000;i>0;i-=8)
{
do_it(i); do_it(i-1); do_it(i-2); ... do_it(i-7);
}
তবে এর কারণগুলি বেশ জটিল হতে পারে (কেবল উল্লেখ করার জন্য, গেমটিতে প্রসেসর কমান্ড প্রিপ্রসেসিং এবং ক্যাশে হ্যান্ডলিংয়ের বিষয়গুলি রয়েছে)।
নিরিখে উচ্চ স্তরের ভাষা , মত জাভাস্ক্রিপ্ট হিসাবে আপনি জিজ্ঞেস করলেন, কিছু লুপিং জন্য অপ্টিমাইজ পারেন যদি আপনি লাইব্রেরি উপর নির্ভর ফাংশন বিল্ট-ইন। এটি কীভাবে সেরা হয় তা তাদের সিদ্ধান্ত নিতে দিন।
ফলস্বরূপ, জাভাস্ক্রিপ্টে, আমি এরকম কিছু ব্যবহার করার পরামর্শ দেব
array.forEach(function(i) {
do_it(i);
});
এটি ত্রুটি-প্রবণতাও কম এবং ব্রাউজারগুলির কাছে আপনার কোডটি অপ্টিমাইজ করার সুযোগ রয়েছে।
[মন্তব্য: কেবল ব্রাউজারগুলি নয়, আপনার খুব সহজেই অনুকূলিতকরণের জন্য একটি জায়গা রয়েছে, কেবলমাত্র forEach
ফাংশনটিকে ( নতুনভাবে নির্ভর করে ব্রাউজারটি) নতুন করে সংজ্ঞা দিন যাতে এটি সর্বশেষতম সেরা কৌশল ব্যবহার করে! :) @AMK বিশেষ ক্ষেত্রে বলছেন বরং এটা ব্যবহার মূল্য array.pop
বা array.shift
। যদি আপনি এটি করেন, এটি পর্দার পিছনে রাখুন। পরম Overkill অপশন যোগ করার জন্য হয় forEach
লুপিং অ্যালগরিদম নির্বাচন করতে।]
তদুপরি, নিম্ন স্তরের ভাষার ক্ষেত্রেও সম্ভব হয় যদি জটিল, লুপযুক্ত ক্রিয়াকলাপগুলির জন্য কিছু স্মার্ট লাইব্রেরি ফাংশন ব্যবহার করা ভাল অভ্যাস।
এই লাইব্রেরিগুলি আপনার পিছনে জিনিসগুলি (বহু-থ্রেডযুক্ত) রাখতে পারে এবং বিশেষায়িত প্রোগ্রামাররা সেগুলি আপ টু ডেট রাখে।
আমি কিছুটা বেশি যাচাই-বাছাই করে দেখলাম যে সি / সি ++ এর মধ্যে, এমনকি 5e9 = (50,000x100,000) অপারেশনের জন্যও, যদি @ এলিস্তানিসের মত ধ্রুবকের বিরুদ্ধে পরীক্ষা করা হয় তবে উপরে ও নীচে কোনও পার্থক্য নেই । (JsPerf ফলাফল কখনও কখনও অসঙ্গত কিন্তু মোটের উপর বলতে একই: আপনি একটি বড় পার্থক্য করতে পারবে না)।
সুতরাং --i
বরং একটি "সর্বোকৃষ্ট" ব্যাপার হতে হবে। এটি কেবল আপনাকে আরও ভাল প্রোগ্রামারের মতো দেখায়। :)
অন্যদিকে, এই 5e9 পরিস্থিতিতে অ-তালিকাভুক্তকরণের জন্য, আমি যখন 10 সেকেন্ডে গিয়েছিলাম তখন তা আমাকে 12 সেকেন্ড থেকে 2.5 সেকেন্ডে নামিয়ে নিয়েছে এবং আমি যখন 20 এর দশক পেরিয়েছি তখন 2.1 সেকেন্ডে চলে এসেছি। এটি অপ্টিমাইজেশান ছাড়াই ছিল এবং অপ্টিমাইজেশন জিনিসগুলি অমূল্য অল্প সময়ের জন্য এনেছে। :) (তালিকাভুক্তি উপরে বা ব্যবহার করে আমার পদ্ধতিতে করা যেতে পারে i++
তবে জাভাস্ক্রিপ্টে জিনিসগুলি সামনে আনা যায় না))
সর্বেসর্বা: Keep i--
/ i++
এবং ++i
/ i++
কাজ সাক্ষাতকার, বিদ্ধ করা পার্থক্য array.forEach
বা অন্যান্য জটিল গ্রন্থাগার ফাংশন যখন পাওয়া যায়। ;)