How much slower is random access, really?
a year ago
- #memory-access
- #benchmarking
- #performance
- 随机访问性能受缓存局部性影响显著,顺序访问(从头到尾)比随机访问更快
- 当数组超过L3缓存大小时(约100万元素),性能差异开始显现
- 在MacBook上顺序访问平均每个元素耗时1纳秒,Linux桌面电脑约0.5纳秒
- 对于超出L3缓存但仍在内存容量的数组,随机访问在MacBook上慢4倍,Linux上慢8-16倍
- 当数组超过内存容量时性能急剧下降,Linux上随机访问比顺序访问慢50倍
- Fisher-Yates洗牌算法对大数据集效率低下,推荐使用两遍洗牌法
- 内存映射文件对大型数据集没有显著性能提升,macOS和Linux表现存在差异
- 直接文件读取可能比内存映射更高效,在Linux系统上尤其明显