我正在使用平铺开发一个缓存高效的转置算法,我注意到当我使用malloc
分配内存时,我的性能比使用posix_memalign
时差。更具体地说:
使用malloc:98.7毫秒
使用posix:86.4毫秒(数据对齐为32,64,128,256,512,1024,2048,4096)
我正在分配一个32位整数数组。
我无法解释为什么posix-x,其中4096> x> 32和x是数据对齐,为此范围的数据对齐值提供或多或少相同的效率。在我的算法中,我预先获取缓存行(64字节),所以我希望对于x = 64,我会得到最好的性能数字。
答案 0 :(得分:1)
我做了一个简单的测试,当与8字节对齐时,性能最佳。
posix_memalign
默认使用8个字节对齐。我试过了unsigned char
对齐更大,但这并没有使性能更好。并且性能
与8字节对齐只有一点差异。