Bonsoir à tous,
Voila je me posait quelques questions concernant les optimisations sur types en c++.
En c++ concrètement à quoi correspond short, int, long etc.
J'ai cru comprendre que ça changeait fortement en fonction de l'archi, du système, du compilo etc. J'ai cru comprendre que grâce à typedef il était possible de forcer la taille de ses types primaires. Est-ce portable comme méthode.
Et puis surtout concrètement est-ce que c'est rentable d'optimiser le stockage des infos sur le type le plus petit, ou bien ça n'impacte pas les perfs. Par exemple en mettant un short au lieu d'un int sur un truc qui ne sera pas très élevé, est-ce que ça va impacter les performances, ou bien le short sera converti en int lors du traitement par le proc ? ou pas ? Les compilos font-ils ce genre d'optis ? Est-ce que ça va concrètement réduire l'empreinte mémoire en stockant en short plutôt qu'en int ou bien ça ne sera pas le cas par l'alignement des mots en mémoire.
Autre question dans la même série est-ce que l'utilisation de "champs de bits" peut réduire l'empreinte mémoire et améliorer les performances ?
Ex: Prenons un jeu de strate temps réel, avec des milliers d'unités. Bah plutôt que d'avoir pleins de variables avec la vie des unites, leur armure, leur puissance d'attaque contre unites à terre, volantes (0 par exemple si ça ne peux tirer en l'air), si comme dans war3 ça gère aussi les types de dégâts (perçant / contondants) et les types d'armures légères lourdes, cuir, maille, plaques etc, les vitesses de déplacement. Ça commence a faire un sacré gros paquet de variables surtout si l'ont multiplie par le nombre d'unités, pour des valeurs très petites (Ex:Une unité avec beaucoup de puissance d'attaque aura de 1 à 5 étoiles affiché à l'écran, donc 3 bits suffisent pour cette information en mémoire).
Donc dans un cas comme ça est-ce que l'utilisation de "champs de bits" peuvent être intéressant niveau consommation mémoire et au niveau des perfs. Ou ça ne sert à rien de ce faire chier ?
Certes plutôt que me préoccuper de ces quelques broutilles je sais bien que je devrais me soucier d'abord par exemple de finaliser un programme et optimiser ensuite, etc. Néanmoins j'ai horreur des bloatwares et je ne voudrais pas en développer moi même.
Merci d'avance pour vos réponses![]()
Partager