Почему целые числа использования, меньшие, чем 32 бита?

Если у Вас есть 99,00$ для экономии Вас, может хотеть смотреть на http://www.isapirewrite.com/

[Выборка от их веб-сайта]

Обзор продукта

, ISAPI_Rewrite является мощным механизмом управления URL на основе регулярных выражений. Это действует главным образом как mod_Rewrite Apache, но специально разработано для Сервера информации об Интернете (IIS) Microsoft. ISAPI_Rewrite является фильтром ISAPI, записанным в чистом C/C++, таким образом, это чрезвычайно быстро. ISAPI_Rewrite дает Вам свободу пойти вне стандартных схем URL и разработать Вашу собственную схему.

[Пример использования] доступный в http://www.helicontech.com/articles/provocative_SEF_URLs.htm

5
задан Mohamed Atia 25 October 2009 в 21:11
поделиться

5 ответов

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

11
ответ дан 18 December 2019 в 06:51
поделиться

Нет, int был выбран как самый быстрый тип int для современных 32/64 битных архитектур с использованием более коротких ( коротких , sbyte ) будет стоить вам только производительности.

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

Расчет с 8 битами:

sbyte a, b, c;
a = (sbyte) (b + c);

Приведение типа требуется и требует затрат времени выполнения.

4
ответ дан 18 December 2019 в 06:51
поделиться

Если это простая переменная, то при использовании меньшей ширины ничего не получится, и некоторая производительность может быть потеряна. Компилятор автоматически расширит объем памяти до полного процессорного слова, поэтому, даже если вы объявите только 16 бит, в стеке, скорее всего, потребуется 32 бита. Кроме того, в некоторых случаях компилятору может потребоваться выполнить определенные операции усечения (например, когда поле является частью структуры); они могут вызвать небольшие накладные расходы.

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

3
ответ дан 18 December 2019 в 06:51
поделиться

Обычно используйте int и т. Д.

В дополнение к другим ответам; также есть случаи, когда вы намеренно хотите поддерживать только заданный размер данных, потому что он представляет некоторую ключевую истину о данных. Это может быть ключевым при взаимодействии с внешними системами (в частности, взаимодействием, но также с базами данных, форматами файлов и т. Д.) И может быть смешано с проверенной арифметикой - для выявления переполнения как можно раньше.

3
ответ дан 18 December 2019 в 06:51
поделиться

Честно говоря, потребление памяти, вероятно, не самая веская причина использовать маленькие целые числа (в этом примере). Но на карту поставлен общий принцип, гласящий: да, вы должны использовать только ту память, которая требуется для ваших структур данных.

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

2
ответ дан 18 December 2019 в 06:51
поделиться
Другие вопросы по тегам:

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