Почему Byte не является типом поддержки по умолчанию для перечислений? - PullRequest
2 голосов
/ 12 января 2012

Почему Байт не является типом поддержки по умолчанию для перечислений?

Int32 кажется излишним. Каждый Enum, который я когда-либо использовал, содержал менее 20 значений. Это микрооптимизация, но кажется, что все обычные использования имеют менее 256 значений [по моему ограниченному опыту].

Есть ли более техническая причина, или просто для того, чтобы убедиться, что "все распространенные" сценарии использования Enum работают нормально, а Int32 не так уж и дорого во всех случаях, кроме как в ключевых случаях?

Кроме того, я понял, что компилятор не меняет тип поддержки (или никто не упомянул, что он оптимизирует перечисления в том, что я прочитал). Оптимизирует ли он тип поддержки, так как он знает диапазон значений во время компиляции?

1 Ответ

5 голосов
/ 12 января 2012

Поскольку набор инструкций x86 изначально поддерживает операции int32.При использовании операндов int8 выигрыш в производительности отсутствует.Также доступ к памяти для операндов, которые выровнены естественным образом (32 бита на адресе, кратном 32), осуществляется быстрее, чем если бы сначала нужно было перетасовать подслово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...