我试图找出什么是基准C++程序的最佳方法,并想模拟当与基准部分相关的数据存在于缓存中并且冷时的情形。

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

最佳答案

假定您正在对在一系列对象上执行操作的算法进行基准测试,并且您关心这些对象在内存中的位置(因此在缓存中)。

要“模拟”位置,请执行以下操作:创建位置。您可以创建局部性高的链表以及局部性低的链表:

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

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

关于c++ - 进行基准测试时,有没有一种模拟缓存局部性的方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60698317/

10-11 18:41