高级技术
特定于运行代码的体系结构的技术
- CPU缓存介绍
- 性能的悬崖
- 围绕缓存行构建直觉:大小,填充,对齐
- 共享假
- 真正的共享 ->分片
- OS工具来查看缓存未命中
- Mao与切片
- SOA vs AOS布局
- 减少指针追逐
分支预测
从内部循环中删除分支:
if a { for { } } else { for { } }
代替
for { if a { } else { } }避免
if i % 2 == 0 {
evens++
} else {
odds++
}
counts[i & 1] ++并不总是更快,但通常更难以阅读
TODO:ASCII类计数示例和基准- 排序数据可以通过缓存局部性和分支预测来帮助提高性能,即使考虑到排序所花费的时间
- 函数调用开销
- 关于Jeff Dean的2002年数字(加上更新)的评论
- cpus变得更快了,但是内存没有跟上