我有一个指针的字节数组mixed,包含两个不同的阵列的交错字节array1和array2.说mixed看起来像这样:
a1b2c3d4...
Run Code Online (Sandbox Code Playgroud)
我需要做的是解交织字节,所以我得到array1 = abcd...和array2 = 1234....我知道mixed提前的长度,长度array1和array2等价,都等于mixed / 2.
这是我目前的执行(array1和array2已经被分配):
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)