Есть такой человек - Крис Касперски. Вот он обо всем этом столько написал, что я даже не представляю, как это все можно вообще прочесть . Ищи и обрящешь.
Процессор типа i386 может считывать только DWORD-ы и только по адресу, кратному 4.
Если производится обращение к аргументу, пересекающему границу DWORD-ов, то процессор вынужден выполнить два чтения из памяти подряд. Это занимает вдвое больше времени.
Соответственно, для байтов всё равно, как они выровнены; для WORD-ов надо, чтобы их адрес Mod 4 <> 3 (обычно их "для гарантии" размещают по чётному адресу)
Пасибо, Темыч!
Как я понял, отключение выравнивание приведет к уменьшению требуемой памяти, но, в описанной тобою ситуации, приведет к снижению быстродействия?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении. Блог
ANDLL писал(а):Пасибо, Темыч! Как я понял, отключение выравнивание приведет к уменьшению требуемой памяти, но, в описанной тобою ситуации, приведет к снижению быстродействия?
Да.
Кстати, на новых процах от невыровненных данных есть ещё один ущерб: они занимают две ячейки кэша вместо одной. Т.е. экономя медленную дешёвую память (ОЗУ), ты теряешь быструю и дорогую (кэш).