আমার সেই দিনগুলি থেকে মনে আছে যখন আমরা কলেজে ৮০8686 বিধানসভা করেছি এটি করা আরও পারফরম্যান্ট ছিল:
for (int i = 6; i > -1; i--)
যেহেতু একটি জেএনএস অপারেশন ছিল যার অর্থ কোনও চিহ্ন না থাকলে লাফ দিন। এটি ব্যবহারের অর্থ হ'ল প্রতিটি চক্রের পরে তুলনা মান এবং কোনও তুলনা করার জন্য কোনও মেমরি লুক ছিল না। এই দিনগুলিতে সর্বাধিক সংকলকগণ নিবন্ধের ব্যবহারকে সর্বোত্তম করে তোলেন যাতে মেমরির জিনিসটি আর গুরুত্বপূর্ণ নয়, তবে আপনি এখনও একটি অপ্রয়োজনীয় তুলনা পান।
আপনার লুপে or বা putting রাখার মাধ্যমে একটি " যাদু নম্বর " প্রবর্তন করা হচ্ছে । আরও ভাল পঠনযোগ্যতার জন্য আপনার একটি উদ্বেগ প্রকাশকারী নাম সহ একটি ধ্রুবক ব্যবহার করা উচিত। এটার মত:
const int NUMBER_OF_CARS = 7;
for (int i = 0; i < NUMBER_OF_CARS; i++)
সম্পাদনা: লোকেরা সমাবেশের জিনিস পাচ্ছে না তাই স্পষ্টতই একটি উদাহরণ উদাহরণ প্রয়োজন:
আমরা যদি (i = 0; i <= 10; i ++) এর জন্য করি তবে আপনাকে এটি করতে হবে:
mov esi, 0
loopStartLabel:
; Do some stuff
inc esi
; Note cmp command on next line
cmp esi, 10
jle exitLoopLabel
jmp loopStartLabel
exitLoopLabel:
যদি আমরা (int i = 10; i> -1; i--) এর জন্য করি তবে আপনি এগুলি থেকে দূরে যেতে পারেন:
mov esi, 10
loopStartLabel:
; Do some stuff
dec esi
; Note no cmp command on next line
jns exitLoopLabel
jmp loopStartLabel
exitLoopLabel:
আমি মাত্র পরীক্ষা করেছি এবং মাইক্রোসফ্টের সি ++ সংকলক এই অপ্টিমাইজেশনটি করে না, তবে আপনি যদি তা করেন তবে:
for (int i = 10; i >= 0; i--)
সুতরাং নৈতিকতাটি হ'ল যদি আপনি মাইক্রোসফ্ট সি ++ using ব্যবহার করে থাকেন এবং আপনার ব্যবহার করা উচিত তত দ্রুত লুপটি পেতে, আরোহণ বা উতরাই কোনও পার্থক্য করে না:
for (int i = 10; i >= 0; i--)
এর চেয়ে উভয়টির চেয়ে:
for (int i = 10; i > -1; i--)
for (int i = 0; i <= 10; i++)
তবে স্পষ্টতই "for (int i = 0; i <= 10; i ++)" এর পাঠযোগ্যতা পাওয়া সাধারণত একটি প্রসেসরের কমান্ড মিস করার চেয়ে অনেক বেশি গুরুত্বপূর্ণ।
† অন্যান্য সংকলকরা বিভিন্ন জিনিস করতে পারে।