При объявлении перечисления необходимо ли вызвать тип к байту для под 256 объектами?

Я добавил: transformRequest: angular.identity в запросе params.

34
задан Sir Crispalot 23 April 2015 в 09:58
поделиться

5 ответов

Нет. Преждевременно не оптимизируйте , если Вы не доказали с профилировщиком, что это - на самом деле проблема.

40
ответ дан JaredPar 27 November 2019 в 16:23
поделиться

Касающийся лучшей практики:

, Когда у Вас нет конкретной причины того, чтобы сделать перечисление байтом типа, необходимо оставить его как значение по умолчанию.

Любое время Вы используете перечисление в операторе переключения, у Вас должен быть пункт "по умолчанию" для недопустимого перечисления значений. Таким образом, не имеет значения, если Вы проверяете на 256-NumRealEnumValues или 2^32-NumRealEnumValues. У обоих будет пункт по умолчанию, который обрабатывает все недопустимые случаи.

Одна причина того, чтобы явно установить тип перечисления, то, если Вы хотите, чтобы Ваше перечисление соответствовало другому типу в Вашей программе, и необходимо явно бросить между ними.

Изменение типа к самому маленькому соответствию не поможет Вам с проблемами управления версиями также. Если у Вас нет точно макс. размера заполненного перечисления. Проблемами управления версиями я имею в виду, когда у Вас есть скомпилированный dll использование перечисления, тогда Вы добавляете новое перечисление значений, некоторый код может выполниться, который не был предназначен для входа вв пункт "по умолчанию" оператора переключения.

Касающийся эффективности:

No нет никакого преимущества с точки зрения эффективности для создания этого байтом.

интервал более эффективен для использования, потому что CPU на x86 имеет 32-разрядные регистры. Копирование в регистр сделано 32 бита за один раз.

при использовании меньшего типа необходимо обнулить часть регистра и копии в остальную часть битов регистра более низкоуровневых.

29
ответ дан Brian R. Bondy 27 November 2019 в 16:23
поделиться

Единственная причина сделать это - то, если Вы храните или передаете это значение с помощью определенного протокола, который требует поле для имения тот размер.

8
ответ дан Juliano 27 November 2019 в 16:23
поделиться

Что было бы получено? Вы сохранили бы огромные 3 байта памяти, за счет немного более медленного выполнения и менее интуитивного или читаемого кода. (Читающий это, я должен задаться вопросом, имел ли pyou на самом деле причину того, чтобы сделать это байтом, и какова та причина, возможно, была. По-видимому, Вы старались изо всех сил использовать тип не по умолчанию по причине).

, Если Вы планируете сохранить миллионы этих вещей тогда да, сохраняя несколько байтов на каждом, может окупиться. Иначе, нет.

Это - та же причина, Вы обычно не используете байт или короткий вместо интервала

2
ответ дан jalf 27 November 2019 в 16:23
поделиться

Вы не должны присваивать определенный целый тип перечислениям, но позволять среде.NET выяснить лучший "размер" для перечисления. Как JaredPar заявил, при изменении типа данных Вы должны определенно проверка, помогает ли он на самом деле.

вещь состоит в том, что 32-разрядные целые числа являются "естественными" на x86 процессорах, потому что они могут быть, легко выравниваются оптимальным способом.

0
ответ дан Christian Klauser 27 November 2019 в 16:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: