相关疑难解决方法(0)

确定整数是否在具有已知值集的两个整数(包括)之间的最快方法

是否有比x >= start && x <= endC或C++ 更快的方法来测试整数是否在两个整数之间?

更新:我的特定平台是iOS.这是盒子模糊功能的一部分,它将像素限制为给定方块中的圆圈.

更新:在尝试接受的答案后,我在一行代码上以正常x >= start && x <= end方式执行了一个数量级的加速.

更新:这是来自XCode的汇编程序的after和before代码:

新方法

// 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
Run Code Online (Sandbox Code Playgroud)

老路

#define POINT_IN_RANGE_AND_INCREMENT(p, range) (p <= range.end …
Run Code Online (Sandbox Code Playgroud)

c c++ math performance

376
推荐指数
4
解决办法
6万
查看次数

Matlab性能:比算算慢

前一阵子我提供了这个问题的答案.

目标:计算此矩阵中值[3 6]范围内的值的数量:

A = [2 3 4 5 6 7;
     7 6 5 4 3 2]
Run Code Online (Sandbox Code Playgroud)

我想出了12种不同的方法:

count = numel(A( A(:)>3 & A(:)<6 ))      %# (1)
count = length(A( A(:)>3 & A(:)<6 ))     %# (2)
count = nnz( A(:)>3 & A(:)<6 )           %# (3)
count = sum( A(:)>3 & A(:)<6 )           %# (4)

Ac = A(:);
count = numel(A( Ac>3 & Ac<6 ))          %# (5,6,7,8)
%# prevents double expansion
%# similar for length(), nnz(), sum(), …
Run Code Online (Sandbox Code Playgroud)

performance matlab jit operators octave

11
推荐指数
1
解决办法
376
查看次数

标签 统计

performance ×2

c ×1

c++ ×1

jit ×1

math ×1

matlab ×1

octave ×1

operators ×1