"Char" и "small int" медленнее, чем "int"?
Возможный дубликат:
Производительность встроенных типов: char против short против int против float против double
Привет. Предположим, что у вас 32-битный процессор. 8-битные char
и 16-битный short int
типы медленнее, чем родные 32-битные int
? Как насчет использования 64-битной long long int
?
Поддерживаются ли эти типы данных аппаратными средствами по умолчанию или все они все равно преобразуются в 32-битные данные с помощью дополнительных инструкций?
В случае, если мне нужно хранить небольшое количество символов, не быстрее ли хранить их как целые?
2 ответа
На любой современной, практичной машине, char
, int
, а также long
все будет быстро (вероятно, одинаково быстро). Будь то short
быстро или нет, зависит от архитектуры процессора и даже разных моделей процессора в рамках одной архитектуры.
С учетом вышесказанного, на самом деле нет веской причины использовать мелкие типы для отдельных переменных, независимо от их скорости. Их семантика сбивает с толку (из-за продвижения по умолчанию int
) и они не сэкономят вам значительного места (может быть, даже не места). Единственный раз, когда я бы использовал char
, short
, int8_t
, int16_t
и т. д. находится в массивах или структурах, которые должны соответствовать фиксированному двоичному формату, в котором их будет так много (например, пикселей или аудиосэмплов), что размер каждого из них действительно имеет значение.
Это зависит от операций в наборе команд, а также от компилятора.