我试图弄清楚哪种基准C ++程序是最好的方法,并且想模拟当与基准部分相关的数据存在于缓存中并且冷时的情形。
假设已知要涉及的数据是已知的,是否有一种可靠的方法可以在x86-64机器上强制执行好坏的缓存局部性作为测试运行的准备形式?
要“模拟”位置:创建位置。您可以创建本地性高的链表,也可以创建本地性低的链表:
分配数组中的节点。要创建具有较高局部性的列表,请确保数组的第一个元素指向第二个,依此类推。要创建局部性较低的列表,请创建顺序的随机排列,以便每个节点在数组的随机位置指向另一个节点。
确保元素数量至少比最大缓存大一个数量级。