#java #типы_данных
Ведь лучше же. Переменные, которые влезут в диапазон -32768 - +32767 встречаются в коде часто. Short жрёт меньше оперативы, чем int. И почему-то всё равно почти не используют short. Почему?
Ответы
Ответ 1
Когда говорят о размерности типа данных, то подразумевают скорее его диапозон допустимых значений, чем количество занимаемых байт в оперативной памяти. Большинство компиляторов выравнивает значения в памяти по некоторой границе (обычно по размерности регистров процессора). Соответственно значения типа short (при размерности 16 бит) и типа int (при размерности 32 бита) в итоге займут одинаковое количество байтов в памяти (например 4 или 8 байтов). Более того, компиляторы и виртуальные машины знают о кэшах процессоров, и могут выполнять такую оптимизацию доступа к памяти, которая приведет к тому, что одно значение будет занимать целую линию кэша (например 32 байта). Из этого можно сделать вывод, что экономия при выборе типа данных будет заметна при сохранении данных в бинарном виде (в виде массива байт в памяти или на диске), но слабо контролируется пользователем при размещении тех же данных в памяти как переменных.Ответ 2
Использование short для одиночной переменной очень часто лишено смысла: размер int обычно подобран наиболее эффективным образом (в языках, которые допускают переменный размер), так что оперирование с int наиболее выгодно. Есть, однако, случаи, когда количество памяти, занимаемое переменной, имеет значение: это случай массива. Здесь для экономии памяти может оказаться уместным использование более "коротких" типов данных. Почему же short редко используют? Наверное потому, что сейчас оперативная память достаточно велика, и экономия памяти не настолько важна.
Комментариев нет:
Отправить комментарий