我需要一个 2 位数组,我根本不关心节省内存,但我关心的是尽量减少缓存未命中和最大限度地提高缓存效率。使用 bool 数组将使用 4 倍的内存,这意味着对于缓存中每个可用的数据块,将有 3 个未使用。所以从技术上讲,如果我使用位域,我可以获得 3 倍更好的缓存一致性。
计划是将其实现为一个字节数组,分为 4 个相等的位域,并使用 div 函数能够获得整数商和余数,可能在单个时钟内,并使用它们访问正确的索引和右位域。
我需要的数组大约有 10000 个元素长,因此它将产生更密集的打包数据,使用 2 个实际位将允许整个数组适合 L1 缓存,而使用字节数组这是不可能的。
所以我的问题是,是否有人可以告诉我这在面向性能的任务中是否是一个好主意,所以我知道是否值得继续实施 2 位数组?当然,最好的了解方法是分析,但提前提供的任何信息都可能有用,我们将不胜感激。