java怎么求两组整数的或集,确定整数是否在具有已知值集的两个整数(包括)之间的最快方法...
在C或C中是否有比 x >= start && x <= end 更快的方法來測試整數是否在兩個整數之間?
更新:我的特定平臺是iOS . 這是盒子模糊功能的一部分,它將像素限制為給定方塊中的圓圈 .
更新:在嘗試accepted answer之后,我在一行代碼上獲得了一個數量級的加速,而不是正常的 x >= start && x <= end 方式 .
更新:這是來自XCode的匯編程序的after和before代碼:
NEW WAY
// 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
OLD WAY
#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
非常驚人的是如何減少或消除分支可以提供如此驚人的速度 .
總結
以上是生活随笔為你收集整理的java怎么求两组整数的或集,确定整数是否在具有已知值集的两个整数(包括)之间的最快方法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做牙齿矫正多少钱啊?
- 下一篇: 风水罗盘要多少钱一个啊?