Re[7]: Проблема с sizeof
От: KonstantinA Россия  
Дата: 16.04.02 17:28
Оценка: 3 (1)
Здравствуйте KonstantinA, Вы писали:

KA>Вообще говоря, самый приличный вариант { DWORD, BYTE, BYTE, BYTE } (7). Все типы выровнены.

KA>Т.к. доступ к невыровненным данным ( т.е. адрес не кратен размеру типа )
KA>занимает больше времени. Рихтер пишет что-то типа,
KA>что процессор x86 это делает сам (раз в 20 дольше чем для выровненного типа ),
KA>а процессоры Alpha генерят исключения, которые обрабатывает OS ( в 1000-2000 раз медленнее ).
KA>Более того можно (не помню как, см. Рихтер ) сделать чтобы исключение генерилось
KA>и для x86. :down:

Извиняюсь за допущенные неточности:
1.Рихтер не говорит насколько велико замедление на x86.Не менее чем в 2 раза.
2. на Alpha замедление доходит до порога в 100 раз
3. на x86 Windows 2000(98) не меняют флаг процессора ответственны за генерацию исключений из-за невыровненных данных. Поэтому там процессор справляется сам.
4. на Alpha можно поменять флажок в реестре, чтобы система не обрабатывала исключения о невыровненных данных. Тогда программа аварийно завершиться.
5. можно смотреть частоту ошибок выравнивания через perfmon.
6. размер структуры {DWORD,BYTE,BYTE,BYTE} без всяких извращений все-таки 8 байт. Но мне как-то не жалко здесь 1-го байта
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.