x >= start && x <= end
কোনও পূর্ণসংখ্যা দুটি পূর্ণসংখ্যার মধ্যে হয় কিনা তা পরীক্ষা করার জন্য সি বা সি ++ এর চেয়ে আরও দ্রুততর উপায় আছে কি ?
হালনাগাদ : আমার নির্দিষ্ট প্ল্যাটফর্মটি আইওএস। এটি একটি বক্স ব্লার ফাংশনের একটি অংশ যা প্রদত্ত স্কোয়ারের একটি বৃত্তে পিক্সেলকে সীমাবদ্ধ করে।
আপডেট : গ্রহণযোগ্য উত্তর চেষ্টা করার পরে , আমি স্বাভাবিকের চেয়ে এক লাইনের কোডে প্রস্থের গতি সম্পন্ন করার আদেশ পেয়েছিx >= start && x <= end
।
হালনাগাদ : এক্সকোড থেকে এসেম্বলারের সাথে কোডটি পরে এবং আগে এখানে রয়েছে:
নতুন উপায়
// diff = (end - start) + 1
#define POINT_IN_RANGE_AND_INCREMENT(p, range) ((p++ - range.start) < range.diff)
Ltmp1313:
ldr r0, [sp, #176] @ 4-byte Reload
ldr r1, [sp, #164] @ 4-byte Reload
ldr r0, [r0]
ldr r1, [r1]
sub.w r0, r9, r0
cmp r0, r1
blo LBB44_30
পুরানো উপায়
#define POINT_IN_RANGE_AND_INCREMENT(p, range) (p <= range.end && p++ >= range.start)
Ltmp1301:
ldr r1, [sp, #172] @ 4-byte Reload
ldr r1, [r1]
cmp r0, r1
bls LBB44_32
mov r6, r0
b LBB44_33
LBB44_32:
ldr r1, [sp, #188] @ 4-byte Reload
adds r6, r0, #1
Ltmp1302:
ldr r1, [r1]
cmp r0, r1
bhs LBB44_36
খুব আশ্চর্যজনক কীভাবে শাখা প্রশাখি হ্রাস বা নির্মূল করা এ জাতীয় নাটকীয় গতি সরবরাহ করতে পারে।