我有一个函数可以将二进制数据从一个区域复制到另一个区域,但前提是字节与特定值不同.这是一个代码示例:
void copy_if(char* src, char* dest, size_t size, char ignore)
{
for (size_t i = 0; i < size; ++i)
{
if (src[i] != ignore)
dest[i] = src[i];
}
}
Run Code Online (Sandbox Code Playgroud)
问题是这对我目前的需求来说太慢了.有没有办法以更快的方式获得相同的结果?
更新: 基于答案我尝试了两个新的实现:
void copy_if_vectorized(const uint8_t* src, uint8_t* dest, size_t size, char ignore)
{
for (size_t i = 0; i < size; ++i)
{
char temps = src[i];
char tempd = dest[i];
dest[i] = temps == ignore ? tempd : temps;
}
}
void copy_if_SSE(const uint8_t* src, uint8_t* dest, size_t …Run Code Online (Sandbox Code Playgroud)