Я просто знаю основные идеи о выровненном распределении памяти. Но я не заботился о проблемах с выравниванием, потому что я не программист по сборке, также не имел опыта работы с MMX/SIMD. И я думаю, что это одна из досрочных оптимизаций.
В эти дни люди все больше говорят о кеш-хите, кеш-когерентности, оптимизации размера и т.д. Некоторые исходные коды даже выделяют память, явно выровненную по строкам кэша CPU.
Честно говоря, я не знаю, насколько размер строки кеша моего процессора i7. Я знаю, что не будет никакого вреда с выравниванием большого размера. Но действительно ли это окупится, без SIMD?
Скажем, там 100000 элементов из 100 байтов данных в программе. И доступ к этим данным является наиболее интенсивной работой программы.
Если мы изменим структуру данных и сделаем все данные размером 100 байтов, выровненными на 16 байт, можно ли получить заметное увеличение производительности? 10%? 5%?