J'ai récemment découvert l'existence de la norme la plus rapide de type, principalement int_fast32_t et int_fast64_t.
On m'a toujours dit que, pour une utilisation normale traditionnels de l'architecture, il faut mieux utiliser classique int & long qui doit correspondre au processeur de lecture par défaut de la capacité et ainsi éviter d'inutiles conversions numériques.
Dans le Standard C99, il est dit au §18.104.22.168p2 :
"La définition de type nom int_fastN_t désigne la manière la plus rapide signé de type entier avec une largeur d'au moins N. typedef nom uint_fastN_t désigne le plus rapide type entier non signé d'une largeur d'au moins N."
Et il y a aussi une citation à ce sujet au §22.214.171.124p1 :
"Le type n'est pas garanti d'être le plus rapide pour tous les usages; si la mise en œuvre n'a pas de raisons pour le choix d'un type plutôt qu'un autre, il va tout simplement de choisir parmi un nombre entier de type satisfaire les ce paramètre et les exigences de largeur."
Il est clair pour moi ce que le plus rapide signifie vraiment. Je ne comprends pas quand je dois utiliser ce type et quand je ne le devrait pas.
J'ai googlé un peu sur ce et a constaté que certains open source, les projets ont changé certaines de leurs fonctions, mais pas tous d'entre eux. Ils n'ont pas vraiment expliquer pourquoi ils ont changé une partie, et seulement une partie de leur code.
Savez-vous quels sont les cas particuliers/usages lorsque int_fastXX_t sont vraiment plus rapide que le classique ?