相关疑难解决方法(0)

C中最快的交错操作?

我有一个指针的字节数组mixed,包含两个不同的阵列的交错字节array1array2.说mixed看起来像这样:

a1b2c3d4...
Run Code Online (Sandbox Code Playgroud)

我需要做的是解交织字节,所以我得到array1 = abcd...array2 = 1234....我知道mixed提前的长度,长度array1array2等价,都等于mixed / 2.

这是我目前的执行(array1array2已经被分配):

int i, j;
int mixedLength_2 = mixedLength / 2;
for (i = 0, j = 0; i < mixedLength_2; i++, j += 2)
{
    array1[i] = mixed[j];
    array2[i] = mixed[j+1];
}
Run Code Online (Sandbox Code Playgroud)

这避免了任何昂贵的乘法或除法运算,但仍然运行得不够快.我希望有类似的东西memcpy需要一个可以使用低级块复制操作来加速该过程的索引器.是否有比我现有的更快的实施?

编辑

目标平台是针对iOS和Mac的Objective-C.对于iOS设备而言,快速操作更为重要,因此针对iOS的解决方案将比没有更好.

更新

感谢大家的回应,尤其是Stephen Canon,Graham Lee和Mecki.这是我的"主"功能,使用Stephen的NEON内在函数(如果可用)和Graham的联合游标,Mecki建议的迭代次数减少.

void interleave(const uint8_t *srcA, const uint8_t …
Run Code Online (Sandbox Code Playgroud)

c arrays performance extract memcpy

12
推荐指数
1
解决办法
5635
查看次数

标签 统计

arrays ×1

c ×1

extract ×1

memcpy ×1

performance ×1