我正在使用tiling开发一种高效缓存的转置算法,我注意到当我使用malloc
分配内存时,我的性能比使用posix_memalign
时差。更具体地说:
使用malloc:98.7 mSec
使用posix:86.4 mSec(用于32,64128256512102420484096的数据比对)
我正在分配一个32位整数的数组。
我无法解释为什么posix-x,其中4096>x>32,x是数据对齐,总是为这个数据对齐值范围提供或多或少相同的效率。在我的算法中,我预取缓存行(64字节),所以我希望对于x=64,我会有最好的性能数字。
我做了一个简单的测试,当与8个字节对齐时,性能是最好的。默认情况下,malloc
使用8字节对齐。我试着用posix_memalign
制作对齐更大,但这并不能提高性能。和性能与aligned by 8字节只有很小的区别。