Страницы

Поиск по вопросам

понедельник, 8 октября 2018 г.

Почему не используют short?

Ведь лучше же. Переменные, которые влезут в диапазон -32768 - +32767 встречаются в коде часто. Short жрёт меньше оперативы, чем int. И почему-то всё равно почти не используют short. Почему?


Ответ

Когда говорят о размерности типа данных, то подразумевают скорее его диапозон допустимых значений, чем количество занимаемых байт в оперативной памяти. Большинство компиляторов выравнивает значения в памяти по некоторой границе (обычно по размерности регистров процессора). Соответственно значения типа short (при размерности 16 бит) и типа int (при размерности 32 бита) в итоге займут одинаковое количество байтов в памяти (например 4 или 8 байтов). Более того, компиляторы и виртуальные машины знают о кэшах процессоров, и могут выполнять такую оптимизацию доступа к памяти, которая приведет к тому, что одно значение будет занимать целую линию кэша (например 32 байта). Из этого можно сделать вывод, что экономия при выборе типа данных будет заметна при сохранении данных в бинарном виде (в виде массива байт в памяти или на диске), но слабо контролируется пользователем при размещении тех же данных в памяти как переменных.

Комментариев нет:

Отправить комментарий