"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и т. д. находится в массивах или структурах, которые должны соответствовать фиксированному двоичному формату, в котором их будет так много (например, пикселей или аудиосэмплов), что размер каждого из них действительно имеет значение.

Это зависит от операций в наборе команд, а также от компилятора.

Другие вопросы по тегам