Il est souvent arrivé que vous sachiez que votre boucle n'exécutera jamais plus de x nombre de fois où x peut être représenté par un octet ou un court-circuit, essentiellement un type de données plus petit que int. Pourquoi utilisons-nous int qui prend 32 bits (avec la plupart des langues) quand quelque chose comme un octet suffirait ce qui est seulement 8 bits.Pourquoi un entier est-il toujours utilisé comme variable de contrôle dans une boucle for?
Je sais que nous avons des processus 32 bits et 64 bits, donc nous pouvons facilement récupérer la valeur en un seul passage, mais il consomme toujours plus de mémoire. Ou qu'est-ce qui me manque ici?
MISE À JOUR: Juste pour clarifier. Je suis conscient que la vitesse sage, il n'y a pas de différence. Je pose des questions sur l'impact sur la consommation de la mémoire.
Vraiment? La plupart du code que j'ai vu utilise une forme de type non signé. –
@Billy ONeal: Sur certains micros intégrés, un type non signé peut offrir de meilleures performances qu'un type signé, au prix d'une plus grande prudence avec la logique de terminaison de boucle. D'un autre côté, si un processeur comme un ARM stocke quelque chose comme uint16 dans un registre 32 bits, il doit ajouter du code supplémentaire pour "écrêter" la valeur à 16 bits. Aucun code de ce type ne serait nécessaire avec un int16 (puisque tout ce qui est autorisé à se produire quand un int16 est assigné une valeur en dehors de la plage -32768..32767, un compilateur pourrait juste laisser sa valeur faire ce qui est pratique). – supercat
Est-ce que vous créez suffisamment de compteurs de boucle pour lesquels le changement de type a un effet * visible * sur la consommation de mémoire? Si c'est le cas, j'affirme que vous avez de plus gros problèmes que de simplement utiliser un type plus large que nécessaire. –