显示我的memcpy的kcachegrind未对齐

时间:2015-08-23 15:07:55

标签: c++ sse libc

使用g ++编译一个使用memcpy的函数,在kcachegrind中,它显示为使用__memcpy_sse2_unaligned

memcpy是否有办法使用对齐版本?

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

int* dstArr = new int [0x10000];
int* srcArr = new int [0x10000];

1 个答案:

答案 0 :(得分:5)

名称__memcpy_sse2_unaligned并不代表您的想法。实际上,它只是memcpy的一个版本,它使用SSE2进行未对齐的访问(在现代/大型CPU上,未对齐访问的代价通常低于强制在软件中对齐的代价)。

您的编译器认为它不具备优化如此大的memcpy本身的智能,并且amd64 ABI不提供承诺对齐的memcpy符号(如__aeabi_memcpy4和{{ ARMEABI中的1}}。

相关问题