Kcachegrind显示内存未对齐
kcachegrind showing my memcpy is unaligned
使用g++编译一个使用memcpy
而在kcachegrind
中显示为使用__memcpy_sse2_unaligned
的函数
是否有办法让memcpy
使用对齐的版本?
更新1:这是我如何创建两个缓冲区
int* dstArr = new int [0x10000];
int* srcArr = new int [0x10000];
名称__memcpy_sse2_unaligned
的含义并不像您想象的那样。事实上,它只是memcpy
的一个版本,使用SSE2进行未对齐的访问(在现代/大型cpu上,未对齐访问的代价通常低于软件中强制对齐的代价)。
您的编译器不认为它有智能来优化这么大的memcpy
本身,amd64 ABI不提供承诺对齐的memcpy
符号(如ARMEABI中的__aeabi_memcpy4
和__aeabi_memcpy8
)。
相关文章:
- 使 std::vector 分配对齐内存的现代方法
- 在 capnp FlatArrayMessageReader 的对齐内存缓冲区中接收 zmq 消息
- Linux C++ 中的页面对齐内存分配
- 对于堆上的页面对齐内存分配是否有任何优化或不同的 API?
- 如何使用此宏测试是否对齐内存
- g++ 如何对齐内存以确保对齐从缓存行的开头开始?
- 正确对齐内存模板,参数顺序不变
- 在 C/C++ 中在特定地址边界上对齐内存是否仍能提高 x86 性能?
- 读取 /编写部分分配的对齐内存
- 指向对齐内存的指针
- 在C++11中,推荐的对齐内存的方法是什么
- C++-对齐内存
- m = XMMatrixIdentity() - 类中的对齐内存后崩溃
- 新字符是否实际上保证类类型的对齐内存
- 分配32字节对齐内存的分配器
- 如何从操作符new或mremap的malloc中获取页对齐内存
- 新 char[] 产生对齐内存的标准要求C++背后的意图是什么?
- 未对齐内存访问:它是定义的行为或不
- 在c++中声明、操作和访问未对齐内存
- c++ 11中的动态对齐内存分配