Я недавно обнаружил существование стандартного самого быстрого типа, в основном 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 есть также цитата:
" Назначенному типу не гарантируетсяБыстрее всего для всех целей: если реализация не имеет четких оснований для выбора одного типа над другим, она просто выберет некоторый целочисленный тип, удовлетворяющий требованиям подписи и ширины.irements. "
Мне неясно, что на самом деле означает fast .Я не понимаю, когда мне следует использовать этот тип, а когда нет.
Я немного погуглил по этому вопросу и обнаружил, что некоторые open source проекты изменили некоторые из своих функций, но не всеиз них.Они на самом деле не объяснили, почему они изменили часть, и только часть своего кода.
Вы знаете, каковы конкретные случаи / применения, когда int_fastXX_t действительно быстрее классических?