Используя Int32 или что вам нужно - PullRequest
3 голосов
/ 22 мая 2010

Если вы используете Int32 в тех местах, где вы знаете, что значение не будет выше 32 767?

Я бы хотел сохранить память, однако использование повсюду повсюду, только для выполнения простой арифметикираздражает.

short a = 1;

short result = a + 1; // Error

short result = (short)(a + 1); // works but looks ugly when does lots of times

Что будет лучше для общей производительности приложений?

Ответы [ 4 ]

8 голосов
/ 22 мая 2010

Насколько я знаю, хорошей практикой является использование int всегда, когда это возможно.Размер int равен размеру слова во многих архитектурах, поэтому я думаю, что при использовании short в некоторых арифметических операциях может быть небольшое снижение производительности

4 голосов
/ 22 мая 2010

Если вы создаете большие массивы, тогда это может сэкономить значительный объем памяти для использования более узких типов (меньше байтов), так как размер массива будет «ширина типа» * «количество элементов» + «накладные расходы» .

Однако по умолчанию я почти уверен, что в классах и структурах они будут упакованы по целым границам слова, например 32 бита = 4 байта. Замыкание все равно будет упаковано в 4-байтовое пространство.

Однако вы можете вручную настроить упаковку в структурах \ классах, используя структуру структуры:

http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.structlayoutattribute(VS.71).aspx

Как и в случае любой проблемы, связанной с производительностью: «не думай - измеряй».

С точки зрения API может быть очень неприятно, когда приходится продолжать приведение типов от коротких к целым и т. Д., Как вы обнаружите, что большинство API, например, будут использовать целые числа.

1 голос
/ 22 мая 2010

3 причины, по которым я должен использовать целочисленный тип данных, меньший чем int32:

  1. Система с серьезными ограничениями памяти.
  2. Огромные массивы или аналогичные.
  3. Я думаю, что это облегчит чтение и понимание кода.

В основном я работаю с обычными приложениями для Windows, поэтому единственная причина, которая обычно имеет для меня значение, - третья

0 голосов
/ 22 мая 2010

Если вы не создаете сотни тысяч членов, тогда экономия пространства на нескольких байтах здесь и там не будет иметь большого значения на любой современной машине. Я думаю, что принцип преждевременной оптимизации применяется здесь. Это может заставить вас чувствовать себя лучше, но вы не получите ничего особенно измеримого из этого. IMO - оптимизируйте использование памяти, только если вы на самом деле используете много памяти.

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