Здравствуйте, Аноним, Вы писали:
А>Для оптимизации доступа к данным, на всех платформах, применяется выравнивание данных, т.е. расположение данных по стартовым адресам, кратным величине выравнивания, иначе, получаем пени за обращение по некратным адресам, или даже падения, на некоторых платформах. => элементы массивов, должны располагаться так же с выравниванием, но это не так
почему же?
Элементы массива располагаются с тем же выравниваем, что и отдельные переменные.
А>Пусть у меня есть бинарный файл, в котором находится порядка 10^6 структуры данных, с 30 полями в каждой структуре, естественно с выравниванием == 1. Необходимо последовательно считать все эти структуры, и подсчитать некие параметры...
А>Вопрос, стоит ли перепаковывать данные после прочтение в стандартное выравние на платформе и уж потом оперировать с ними? А как быть на платформах, где обращение по невыравненному полю приводит к краху?
Это зависит. Зависит много от чего. Такие вопросы крайне архитектурно-зависимы. Так же будет влиять конкретная раскладка структуры. Проще всего тут просто замерить конкретные варианты.
Тем не менее интуиция подсказывает, что перепаковка замедлит работу. По крайней мере на x86.