在进行基准测试时,有没有一种方法可以模拟缓存局部性?

问题描述 投票:2回答:1

我试图弄清楚哪种基准C ++程序是最好的方法,并且想模拟当与基准部分相关的数据存在于缓存中并且冷时的情形。

假设已知要涉及的数据是已知的,是否有一种可靠的方法可以在x86-64机器上强制执行好坏的缓存局部性作为测试运行的准备形式?

c++ x86-64 benchmarking cpu-cache microbenchmark
1个回答
1
投票
大概您正在对在一系列对象上执行操作的算法进行基准测试,并且您关心那些对象在内存中的位置(因此在缓存中)。

要“模拟”位置:创建位置。您可以创建本地性高的链表,也可以创建本地性低的链表:

分配数组中的节点。要创建具有较高局部性的列表,请确保数组的第一个元素指向第二个,依此类推。要创建局部性较低的列表,请创建顺序的随机排列,以便每个节点在数组的随机位置指向另一个节点。

确保元素数量至少比最大缓存大一个数量级。

© www.soinside.com 2019 - 2024. All rights reserved.