CPU缓存机制的几个特点及编写程序时需要注意的点:
1.时间局部性,CPU缓存会假设,如果访问了某一内存区域的,那么很快会重复访问它
- 需要时才声明变量,尽可能缩短对象的周期,提高缓存命中
2.空间局部性,CPU缓存会假设,如果访问了某一内存区域,那么我们还会访问临近的其他内存区域,缓存加载也是按固定大小(64B)的块(cache line)进行读取的
- 尽可能访问连续内存的数据,例如遍历大数组,逐行读取相较于逐列读取性能更优,因为单次读取可以命中多个数组成员
3.多核CPU的每个核心拥有各自独立一二级缓存,需要进行数据同步
- 多线程操作时,线程很大概率会分配在不同的核心上进行工作,此时尽可能减少对同一缓存块的修改可以减少各个线程所在核心的缓存同步的开销,最好是每个线程之访问对象的指定部分,避免缓存交集出现