我了解数据类型或结构对齐、打包、填充问题等的概念。我已经实现了一个单链表,其中每个节点占用大约 250 字节,即大约是 64 字节缓存行大小的 4 倍。我的机器是 Intel 64 位架构。
现在,单个链表本质上是一个指针追逐数据结构,因此会遭受大量缓存未命中的问题。为了减少缓存未命中,我使用 *posix_memalign* 函数对齐每个数据结构节点以缓存 64 字节的行边界。现在所有链表节点都是缓存对齐的。
这样做之后,我发现链表的内存消耗大大增加,而且性能实际上已经恶化。谁能解释可能出了什么问题?