3.perf
原理与使用简介
本文,我们主要关心的是cache miss
事件,那么我们只需要统计程序cache miss
的次数即可。
使用perf
来检测程序执行期间由此造成的cache miss
的命令是perf stat -e cache-misses ./exefilename
,另外,检测cache miss
事件需要取消内核指针的禁用(/proc/sys/kernel/kptr_restrict
设置为0
)。
4.cache
优化实例
4.1数据合并
有两个数据A
和B
,访问的时候经常是一起访问的,总是会先访问A
再访问B
。
这样A[i]
和B[i]
就距离很远,如果A
、B
是两个长度很大的数组,那么可能A[i]
和B[i]
无法同时存在cache
之中。
为了增加程序访问的局部性,需要将A[i]
和B[i]
尽量存放在一起。为此,我们可以定义一个结构体,包含A
和B
的元素各一个。这样的两个程序对比如下:
test.c
#define NUM 39321