Недавно я обнаружил существование стандартного самого быстрого типа, в основном int_fast32_t и int_fast64_t .
Мне всегда говорили, что для нормального использования в основной архитектуре лучше использовать классические int и long , которые всегда должны соответствовать пропускной способности процессора по умолчанию и поэтому избегать бесполезных числовые преобразования.
В стандарте C99 в §7.18.1.3p2 говорится:
«Имя typedef int_fastN_t обозначает самый быстрый целочисленный тип со знаком шириной не менее N. Имя typedef uint_fastN_t обозначает самый быстрый целочисленный тип без знака с шириной не менее N."
И есть также цитата об этом в §7.18.1.3p1:
" Не гарантируется, что указанный тип будет самым быстрым для всех целей; если у реализации нет явных оснований для выбора одного типа над другим, она просто выберет какой-нибудь целочисленный тип, удовлетворяющий требованиям подписи и ширины. "
Мне неясно, что на самом деле означает самый быстрый . Я не понять, когда мне следует использовать этот тип, а когда нет.
Я немного погуглил и обнаружил, что некоторые открытые исходные коды проекты изменили на него некоторые из своих функций , но не все. Они на самом деле не объяснили, почему они изменили часть, а только часть своего кода для нее.
Знаете ли вы, каковы конкретные случаи / использования когда int_fastXX_t действительно быстрее классических?