基准测试通过评估系统访问和利用存储在内存层次结构(例如,缓存、RAM、磁盘)中的数据的效率来衡量数据局部性。数据局部性是指程序所需的数据位于快速、附近存储层的频率,而不是位于较慢、较远的存储层中的频率。基准测试通过跟踪诸如缓存命中率、内存访问延迟或数据重用模式之类的指标来量化这一点。例如,基准测试可能会运行工作负载并测量 CPU 从 L1 缓存检索数据的频率与从主内存中获取数据的频率。高缓存命中率表明强大的时间或空间局部性,这意味着系统有效地将常用数据保存在靠近处理器的位置。
为了评估数据局部性,基准测试通常会模拟或执行真实世界的场景。诸如 LMbench 或 Cachegrind 之类的工具会分析内存访问模式,从而揭示数据如何在缓存行或页面中分布。例如,矩阵乘法基准测试可能表明,行优先遍历(访问连续的内存地址)比列优先方法具有更好的空间局部性,从而减少了缓存未命中。同样,数据库基准测试可以衡量索引对磁盘 I/O 的影响:具有局部数据访问的良好索引查询将比需要分散磁盘寻道的查询执行得更快。这些测试突出了代码或数据结构是否与硬件期望(例如缓存行大小或预取算法)一致。
开发人员使用基准测试结果来优化数据放置和访问策略。例如,重新组织结构以对经常访问的字段进行分组(提高空间局部性)或重新设计循环以重用缓存的数据(增强时间局部性)。一种常见的优化是分块(循环平铺),其中将大型数据集处理成适合缓存的较小块。 诸如 STREAM 之类的基准测试或合成微基准测试可以通过显示减少的内存延迟或更高的吞吐量来验证这些更改。通过将性能指标直接链接到数据访问模式,基准测试可提供可操作的见解,以用于调整系统以利用局部性,从而在算法效率与硬件约束之间取得平衡。