IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Optimisation sur les types.


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Par défaut Optimisation sur les types.
    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

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Les champs de bits peuvent réduire la taille, mais généralement au détriment de la vitesse (s'il faut faire des décalages de bit lors des accès).

    Et puis, dans un jeu de stratégie, on stocke rarement toutes ces caractéristiques dans chaque unité: Généralement, une unité n'a besoin que de sa position sur la carte (et encore pas toujours), sa vie actuelle, ses munitions actuelles, etc., alors que le niveau d'armure, les points de vie maximum, les munitions maximum etc. sont partagées pour toutes les unités d'un même type...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Invité
    Invité(e)
    Par défaut
    lfmarante,

    La règle lorsqu'on programme, c'est d'abord d'écrire un programme correct, et après, s'il y en a besoin, d'utiliser des outils spécifiques pour mesurer les performances pour savoir exactement quoi optimiser, chiffres à l'appui.

    Je t'assure qu'au niveau où tu es, tu n'arriveras jamais à optimiser ton code aussi bien que le compilateur avec les réglages pour performances optimales.

    C'est chiant, mais toute autre attitude est une perte de temps.

    Carl

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Par défaut
    ok ok c'est bien ce qu'il me semblait. Merci pour les explications.
    Médinoc > C'était juste un exemple, un peu con je dois avouer.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Hmm, désolé d'avoir été un peu sec, mais s'il y a une vérité bien établie, c'est vraiment qu'il ne sert à rien à optimiser trop tôt, à toutes les échelles. L'apprentissage du C++ a déjà bien bien des années de plaisir à te procurer avant d'en arriver là. Profites-en!

    Carl

Discussions similaires

  1. Précision sur les types Enum et Set
    Par Djakisback dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/12/2006, 13h36
  2. Questions sur les types énumérés
    Par Premium dans le forum Langage
    Réponses: 5
    Dernier message: 12/11/2006, 18h00
  3. [SQL 2000] Question sur les types de données
    Par Angath dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/11/2006, 14h05
  4. [NTFS]explication sur les type de droits
    Par arnolem dans le forum Sécurité
    Réponses: 6
    Dernier message: 19/04/2006, 12h52
  5. Renseignement sur les "types" d'asm
    Par Coussati dans le forum Assembleur
    Réponses: 4
    Dernier message: 10/01/2006, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo