gpt4 book ai didi

c - 在 C 中进行类型转换后复制数组的更快方法?

转载 作者:太空宇宙 更新时间:2023-11-04 07:27:16 25 4
gpt4 key购买 nike

我有一个二维整数数组 InArray[2][60],它以 2 LS 字节的形式携带 short 数据,以 2 MS 字节的形式携带位域数据。请建议一种更快的方法来提取 short 数据并将其复制到 short OutArray[60]memcpy 行中的内容()。我认为遍历每个项目并不是执行此操作的最佳方法。时间差

编辑:添加代码片段

int InArray[2][60];
short OutArray[60];
for (int i=0; i < 60;i++)
{
OutArray[i] = (short)(InArray[0][i] & 0xffff);
}

是否有更好、可能更快的方法来做到这一点

最佳答案

如果您真的要复制一个 60 元素的数组,那没关系。

如果数组较大和/或您多次这样做,那么您会想看看 SIMD指令集:Intel 平台上的 SSEx,PPC 上的 Altivec...

例如,使用 SSE4,您可以使用 _mm_packus_epi32() 将 2*4 个 32 位操作数打包(并饱和)为 8 个 16 位操作数。

你的编译器可能有内部函数来使用这些:http://msdn.microsoft.com/en-us/library/hh977022.aspx , http://gcc.gnu.org/onlinedocs/gcc-3.3.6/gcc/PowerPC-AltiVec-Built_002din-Functions.html ...

关于c - 在 C 中进行类型转换后复制数组的更快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17212847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com