Разве это действительно имеет значение между коротким, int, long?
В моем приложении С# я хотел бы знать, действительно ли важно использовать короткие для меньших чисел, int для больших и т.д. Действительно ли имеет значение потребление памяти?
Ответы
Ответ 1
Если вы не упаковываете большое количество их вместе в какую-то структуру, это, вероятно, вообще не повлияет на потребление памяти. Лучшей причиной использования определенного целочисленного типа является совместимость с API. Помимо этого, просто убедитесь, что тип, который вы выбираете, имеет достаточный диапазон для покрытия требуемых значений. Помимо этого для простых локальных переменных это не имеет большого значения.
Ответ 2
Простой ответ заключается в том, что это не очень важно.
Более сложный ответ заключается в том, что он зависит.
Очевидно, вам нужно выбрать тип, который будет удерживать вашу структуру данных без переполнения, и даже если вы только сохраняете меньшие числа, то выбор int
, вероятно, является наиболее разумным делом.
Однако, если ваше приложение загружает большое количество данных или запускается на устройстве с ограниченной памятью, вам может потребоваться выбрать short
для некоторых значений.
Ответ 3
Для приложений С#, которые не пытаются отразить какую-либо структуру из файла, вам лучше использовать ints или независимо от вашего собственного формата. Единственный раз, когда это может иметь значение, это использование массивов порядка миллионов записей. Даже тогда я все равно буду считать ints.
Ответ 4
Только вы можете судить о том, действительно ли потребление памяти имеет для вас значение. В большинстве случаев это не будет иметь заметной разницы.
В общем, я бы рекомендовал использовать int
/Int32
, где вы можете с ним справиться. Если вам действительно нужно использовать short
, long
, byte
, uint
и т.д. В той или иной ситуации, сделайте это.
Ответ 5
Это полностью зависит от объема памяти, которую вы можете позволить себе тратить. Если вы не уверены, это, вероятно, не имеет значения.
Ответ 6
Ответ: это зависит. Вопрос о том, насколько важна память, полностью зависит от вас. Если вы пишете небольшое приложение с минимальными требованиями к памяти и памяти, тогда нет. Если вы являетесь Google, сохраняя миллиарды и миллиарды записей на тысячах серверов, тогда каждый байт может стоить реальные деньги.
Ответ 7
Есть несколько случаев, когда я действительно предпочитаю выбирать.
- Когда у меня есть ограничения памяти
- Когда выполняю операции с битрейтом
- Когда я забочусь о переносимости x86/x64
В каждом другом случае int int
Изменить: О x86/x64
В архитектуре x86 int - 32 бита, но в x64, int - 64 бит
Если вы пишете "int" всюду и переходите от одной архитектуры к другой, это может привести к проблемам. Например, у вас есть 32 бит api, которые экспортируют длинный. Вы бросаете его на целое число, и все в порядке. Но когда вы переходите на x64, ад разрывается.
int определяется вашей архитектурой, поэтому, когда вы меняете архитектуру, вам нужно знать, что это может привести к потенциальным проблемам.
Ответ 8
Все зависит от того, как вы их используете и сколько у вас есть. Даже если у вас есть только несколько в памяти - это может привести к типу данных в вашем хранилище.
Ответ 9
Потребление памяти на основе типа целых чисел, которые вы храните, вероятно, не является проблемой на рабочем столе или в веб-приложении. В игре или приложении для мобильных устройств это может быть проблемой.
Тем не менее, настоящая причина различать типы - это тип номеров, который нужно хранить. Если у вас действительно большие числа или высокая точность, вам может потребоваться использовать long
для его сохранения.
Ответ 10
Здесь очень важен контекст ситуации. Вам не нужно угадывать, важно это или нет, но мы имеем дело с поддающимися количественной оценке здесь. Мы знаем, что мы сохраняем 2 байта, используя короткий вместо int.
Как вы оцениваете наибольшее количество экземпляров, которые будут находиться в памяти в данный момент времени? Если есть миллион, то вы спасаете ~ 2Mb Рама. Это большой баран? Опять же, это зависит от контекста, если приложение работает на рабочем столе с 4 ГБ оперативной памяти, вы, вероятно, не слишком заботитесь о 2Mb.
Если в памяти будет сотни миллионов экземпляров, сбережения будут довольно большими, но если это так, у вас может не хватить бара, чтобы справиться с ним, и вам, возможно, придется сохранить эту структуру на диске и работать с его частями одновременно.
Ответ 11
Int32
будет хорошо для всего. Исключения включают:
- если у вас есть конкретные потребности, когда другой тип явно лучше. Пример: если вы пишете 16-разрядный эмулятор,
Int16
(aka: short
), вероятно, лучше будет представлять некоторые из внутренних элементов
- когда API требует определенного типа
- один раз, у меня было неверное
int
литье, а первое предложение Visual Studio состояло в том, чтобы проверить, что мое значение меньше бесконечности. Я не мог найти хороший тип для этого, не используя предварительно определенные константы, поэтому я использовал ulong
, так как это было самым близким, что я мог бы найти в .NET 2.0:)