我想在时间关键函数中复制相对较短的内存序列(小于1 KB,通常为2-200个字节). cpu端的最佳代码似乎是rep movsd.但是我不知道怎么能让我的编译器生成这段代码.我希望(我依旧记得这么看)使用memcpy会使用编译器内置的内在函数来做到这一点,但基于反汇编和调试,似乎编译器正在使用调用memcpy / memmove库实现.我也希望编译器可能足够智能以识别跟随循环并自己使用rep movsd,但似乎它没有.
char *dst; const char *src; // ... for (int r=size; --r>=0; ) *dst++ = *src++;