在iOS中将数组元素分组到存储桶的最快方法是什么?

时间:2013-02-05 21:57:52

标签: ios c arrays histogram accelerate-framework

所以我有500,000个元素的数组:

float* arrayToBucketize=(float*) malloc(sizeof(float)*500000);

和表示存储桶的数组:

int buckets[5]={0,25,50,75,100};

通过第一个数组的最快方法是什么,查看每个浮点值,将其与“buckets”数组进行比较,并用最接近的存储区值替换该浮点值。因此,如果浮点值为11.25,则将替换为0.另一方面,90.10将替换为100.

此外,我还需要该范围之外的任何值(< 0和> 100)保持不变。

我知道我可以用for循环和条件;但是在优化的坏习惯中,我试图找到一种更有效(更快)的方法。我希望Accelerate框架中有一个C函数或iOS函数可以做到这一点。或者可能是一系列Accelerate框架矩阵函数。

由于

1 个答案:

答案 0 :(得分:1)

对于铲斗范围内的每个值,除以铲斗值的最小公倍数。将结果舍入到最接近的整数,然后再乘以最小公倍数。

使用示例数字:

11.25 / 25 = 0.45
0.45 -> 0
0 * 25 = 0

90.10 / 25 = 3.604
3.604 -> 4
4 * 25 = 100

加速框架具有矢量化除法,舍入和乘法函数,因此这些函数应该运行得相当快。