Я знаю о понятиях типа или структуры, выравнивания, упаковки, проблем с заполнением и т. Д. Я реализовал единый связанный список, где каждый узел занимает примерно 250 байт, то есть примерно в 4 раза превышает размер строки кэша 64 байта. Моя машина - 64-битная архитектура Intel.Связанный с кешем сопоставленный список
Теперь один связанный список по существу является указателем, преследующим структуру данных и, следовательно, страдает от большого количества промахов в кэше. Чтобы уменьшить пропуски кэша, я выровнял каждый узел структуры данных с помощью функции * posix_memalign * для кеширования границы 64 байта. Теперь все узлы связанного списка выравниваются по кешу.
После этого я обнаружил, что потребление памяти связанного списка значительно увеличилось, а производительность фактически ухудшилась. Может ли кто-нибудь объяснить, что может быть неправильным?