malloc vs posix_memalign

时间:2014-09-18 09:32:37

标签: alignment malloc posix

我正在使用平铺开发一个缓存高效的转置算法,我注意到当我使用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,我会得到最好的性能数字。

1 个答案:

答案 0 :(得分:1)

我做了一个简单的测试,当与8字节对齐时,性能最佳。 posix_memalign默认使用8个字节对齐。我试过了unsigned char 对齐更大,但这并没有使性能更好。并且性能 与8字节对齐只有一点差异。