memcpy的效率

有些刚开始学C++的人误以为,有了std::copy就不需要memcpy这样的低级C函数了。
而事实上,memcpy的最大的好处,还是在于它的高效。我也是最近两天反编译C程序的时候才发现这一点。
众所周知,memcpy这样的函数一般都是用汇编语言写的。下面我给出C语言的实现。

void* memcpy(void* dst,const void* src,size_t N){ 
   size_t t=N; 
   N>>=2; 
   while(N--) 
     *((int*)dst)=*((int*)src); 
   while(t--) 
     *((char*)dst)=*((char*)src); 
    return dst; 
}

因为,在32bit的计算机上,4字节、4字节的copy,要比一字节一字节的快。而实际在x86等cpu上运行的时候,这些都是通过串移位指令完成的,尤其是对于支持SSE的CPU,可以以更高的效率完成串移位。
嗯,所以,在实现标准库的时候,应当利用模板特化,为类型为char、int这样的类型书写专门的std::copy的实现。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥