C的奇特字符串复制功能
||
在阅读nginx代码时,我看到了以下功能:
#define ngx_cpymem(dst, src, n) (((u_char *) memcpy(dst, src, n)) + (n))
static ngx_inline u_char *
ngx_copy(u_char *dst, u_char *src, size_t len)
{
if (len < 17) {
while (len) {
*dst++ = *src++;
len--;
}
return dst;
} else {
return ngx_cpymem(dst, src, len);
}
}
这是一个简单的字符串复制功能。但是,为什么要测试字符串的长度并在长度> = 17时切换到memcpy呢?
没有找到相关结果
已邀请:
1 个回复
疾桓
另外,两行的上方是
因此,作者进行了测量,得出的结论是,ICC优化的内存复制经过长时间的CPU检查以选择最优化的内存复制变体。他发现手动复制16个字节比从ICC最快的memcpy代码快。 对于其他编译器,nginx确实直接使用
(memcpy)
作者对不同大小的of6进行了研究: