显示我的memcpy的kcachegrind未对齐

MKa*_*ras 2 c++ sse libc

使用g ++编译一个使用memcpy和在kcachegrind其中显示为使用的函数__memcpy_sse2_unaligned.

有没有办法memcpy使用对齐版本?

更新1:这是我创建两个缓冲区的方法

int* dstArr = new int [0x10000];
int* srcArr = new int [0x10000];
Run Code Online (Sandbox Code Playgroud)

jil*_*les 5

这个名字__memcpy_sse2_unaligned并不代表你的想法.事实上,它只是一个memcpy使用SSE2和未对齐访问的版本(在现代/大型CPU上,未对齐访问的代价通常低于强制在软件中对齐的代价).

您的编译器认为它不具备优化如此大的智能memcpy,而amd64 ABI不提供memcpy承诺对齐的符号(如__aeabi_memcpy4__aeabi_memcpy8ARMEABI中一样).