gpt4 book ai didi

c++ - 将短数组向下转换为 char 的最快方法

转载 作者:搜寻专家 更新时间:2023-10-31 02:16:57 24 4
gpt4 key购买 nike

我必须每秒处理大约 2000、100 个元素数组。这些数组以短裤的形式出现,带有高位数据,需要移位并转换为字符。这是我能得到的最有效的方法,还是有更快的方法来执行此操作? (我必须跳过其中的 2 个值)

for(int i = 0; i < 48; i++)
{
a[i] = (char)(b[i] >> 8);
a[i+48] = (char)(b[i+50] >> 8);
}

最佳答案

即使移位和按位运算很快,您也可以尝试将短数组作为 char 指针处理,正如其他评论中所建议的那样。它是每个标准都允许的,并且对于常见的体系结构,它会做预期的事情 - 留下了字节序问题。

因此您可以先尝试确定字节顺序:

bool isBigEndian() {
short i = 1; // sets only lowest order bit
char *ix = reinterpret_cast<char *>(&i);
return (*ix == 0); // will be 1 if little endian
}

你的循环现在变成了:

int shft = isBigEndian()? 0 : 1;
char * pb = reinterpret_cast<char *>(b);
for(int i = 0; i < 48; i++)
{
a[i] = pt[2 * i + shft];
a[i+48] = pt[2 * i + 50 + shft];
}

但与往常一样,对于低级优化,这必须使用将在生产代码中使用的编译器和编译器选项进行基准测试。

关于c++ - 将短数组向下转换为 char 的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36344181/

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