Правило большого пальца: от наибольшего к наименьшему;это дает идеальное выравнивание, когда размеры элементов имеют степень двойки, в противном случае возможна ручная оптимизация.
Обратите внимание, что правильное выравнивание обычно важно для скорости, даже если процессор восстанавливается после нарушений.В то время как руки процессора x86 и (AFAIK) x64 внутренним образом выровняли доступ со вторым чтением, время, «потраченное» на чтение несоосности, обычно намного больше, чем время, сэкономленное из-за меньшего рабочего набора.Так что я бы "плотно упаковал" только когда вы запускаете сравнения на нескольких процессорах.
Для не POD вам нужно проверить sizeof(element)
.
(Если есть тонны объектов, я бы, вероятно, пошел с простым парсером, генерирующим C ++, чтобы вывести эти размеры)
В качестве альтернативы, PVS-Studio анализирует размеры структур и дает рекомендации по переупорядочению.Я еще мало их рассматривал, но вы можете использовать eval, чтобы выяснить, работает ли он на вас.