while (condition) {
...
}
কর্মধারা:
- শর্ত শর্ত;
- মিথ্যা হলে লুপের বাইরের দিকে ঝাঁপ দাও;
- একটি পুনরাবৃত্তি চালান;
- শীর্ষে ঝাঁপ দাও।
if (condition) do {
...
} while (condition);
কর্মধারা:
- শর্ত শর্ত;
- যদি মিথ্যা হয় তবে লুপের ওপারে ঝাঁপ দাও;
- একটি পুনরাবৃত্তি চালান;
- শর্ত শর্ত;
- যদি সত্য হয় তবে পদক্ষেপ 3 এ যান।
এই দুটিটির তুলনা করে আপনি সহজেই দেখতে পাবেন যে পরবর্তীগুলি কোনও লাফাই নাও পারে, তবে প্রদত্ত যে লুপটির মধ্য দিয়ে ঠিক এক ধাপ রয়েছে এবং সাধারণত জাম্পের সংখ্যা পুনরাবৃত্তির সংখ্যার চেয়ে কম হবে। কন্ডিশনটি মিথ্যা হলে কেবল লুপ থেকে লাফিয়ে বাইরে যেতে কন্ডিশনটি পরীক্ষা করতে প্রাক্তনটিকে পিছনে ঝাঁপ দিতে হবে।
আধুনিক পাইপলাইনযুক্ত সিপিইউ আর্কিটেকচারের উপর জাম্পগুলি বেশ ব্যয়বহুল হতে পারে: সিপিইউ যেহেতু জাম্পের আগে চেকগুলি সম্পাদন শেষ করছে, সেই লাফের বাইরে থাকা নির্দেশাবলী ইতিমধ্যে পাইপলাইনের মাঝখানে রয়েছে। যদি শাখার পূর্বাভাস ব্যর্থ হয় তবে এই সমস্ত প্রসেসিং বাতিল করতে হবে। পাইপলাইনটি পুনর্নির্মাণের সময় আরও কার্যকরকরণ বিলম্বিত হয়।
উল্লিখিত শাখার পূর্বাভাস ব্যাখ্যা করা : প্রতিটি ধরণের শর্তসাপেক্ষ জাম্পের জন্য সিপিইউতে দুটি নির্দেশনা রয়েছে, যার প্রত্যেকটিতে ফলাফলের উপর বাজি রয়েছে । উদাহরণস্বরূপ, আপনি একটি নির্দেশ রেখেছিলেন " শূন্য না হলে ঝাঁপ দাও, শূন্য নয় বাজি " একটি লুপের শেষে, কারণ শেষটি বাদে সমস্ত লাফিয়ে লাফাতে হবে। এইভাবে সিপিইউ নিজে লাফ নির্দেশ অনুসরণকারীদের পরিবর্তে জাম্প টার্গেট অনুসরণ করার নির্দেশাবলী দিয়ে তার পাইপলাইন পাম্প করা শুরু করে।
গুরুত্বপূর্ণ তথ্য
উত্স কোড স্তরে কীভাবে অপ্টিমাইজ করা যায় তার উদাহরণ হিসাবে এটি গ্রহণ করবেন না । এটি সম্পূর্ণরূপে বিপথগামী হবে, যেহেতু আপনার প্রশ্ন থেকে ইতিমধ্যে পরিষ্কার, প্রথম রূপ থেকে দ্বিতীয়টিতে রূপান্তরকরণটি সম্পূর্ণরূপে নিজস্বভাবে জেআইটি সংকলকটি রুটিনের বিষয় হিসাবে করে।