Лучший ключевой кандидат: std::int16_t или std::int_fast16_t?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Лучший ключевой кандидат: std::int16_t или std::int_fast16_t?

Сообщение Anonymous »

В среде, использующей типы std::int* (например, std::int16_t), а также типы std::int_fast* (например, std::int_fast16_t), могут существовать общие правила, согласно которым один может быть лучше другого. Для простоты этой статьи я буду называть типы std::int* «точными» типами, а типы std::int_fast* — «быстрыми».
В качестве примера, обычно лучше всего использовать точные типы для элементов массива, поскольку ожидается, что они будут использовать меньше байтов и, следовательно, появится больше возможностей для улучшения кэширования. Другой пример: когда элементы считываются из этого массива, их можно преобразовать в быстрый тип для выполнения арифметических действий.

Код: Выделить всё

void foo() {
std::array arr {};
//  ...
std::int_fast16_t e = arr[index];
}
Менее очевидно, какой тип больше подходит для ключевых типов std::set, std::unordered_set или связанных типов карт. Имеет ли смысл предполагать, что внутреннее хранилище контейнера в целом выигрывает от компактности конкретных типов, таких как случай массива?

Подробнее здесь: https://stackoverflow.com/questions/798 ... t-fast16-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»