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 AVR


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Points : 18
    Points
    18
    Par défaut Optimisation sur AVR
    Bonjour,

    Travaillant régulièrement sur Atmega328p, j'ai pris l'habitude d'éviter de créer des attributs en utilisant à la place des variables statiques locales dans les méthodes.
    Est-ce une bonne habitude ? Y a t'il d'autres méthodes plus intéressantes dans certains cas ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    bonjour,
    si par méthodes tu entends des fonctions membres de classes, alors tu prends le risque de générer des effets de bords (valeurs partagées entre toutes les instances, là où des attributs seraient correctement séparés) et tu te prives de mécanismes de protection comme la const-correctness.
    Si tu ne crées et utilises jamais qu'une seul instance, je ne vois pas trop le gain de remplacer les attributs par des variables statiques locales...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    Je ne créé et n'utilise en effet qu'une seule instance à chaque fois. Merci pour ta réponse !

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Si tu n'utilises qu'une seule instance, à mon avis tu devrais choisir entre deux solutions:
    1) écrire une classe, dans ce cas utiliser des attributs
    Ça permet de minimiser les effets de bord, or quand le code prend de l'ampleur on a vite fait de se faire surprendre par les effets de bord.
    2) zapper la classe et faire des fonctions libres auxquelles tu passes des paramètres.
    Je ne vois pas vraiment quel pourrait être le surcoût d'une création d'attributs par rapport à du statique (le passage de paramètres c'est autre chose).

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    je serai plus direct : c'est une très mauvaise habitude, et l'oublier tout de suite serait certainement plus qu'intéressant, à fortiori sur le long terme.
    Une classe, c'est pas juste des données et des méthodes pour faire jolie - pour ça on a plutôt les namespace -, c'est surtout un ensemble, une logique, qui fait que "oui, ma classe de gestion de dossier contient une liste des fichiers du-dit dossier, et une méthode pour récupérer cette liste", et "non tous les dossiers ne partagent pas une même liste de fichiers".
    Pour l'instant tu "t'en sors" parce que tu n'alloues qu'une seule instance de chaque objet, mais dès que tu en voudras plusieurs, c'est foutu.

    Une variable static dans une méthode a une seule vocation : être partagée entre tous les appels à cette méthode. Par exemple, un compteur du nombre d'appel. Dans le cas d'une classe elle est donc partagée par toutes les instances dans le cas d'une méthode non static.
    Détourner cette utilisation c'est au mieux mal, voire carrément dangereux.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/08/2007, 13h19
  2. Optimisation sur domaine fini
    Par gorgonite dans le forum Prolog
    Réponses: 1
    Dernier message: 04/10/2006, 23h02
  3. Recherche optimisée sur réseau local ?
    Par ghohm dans le forum Administration
    Réponses: 1
    Dernier message: 19/08/2006, 13h33
  4. Optimisation sur liaison série
    Par clem1313 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 05/03/2006, 17h02
  5. [UNIX][Optimisation] sur création de Vue
    Par dyvim dans le forum Oracle
    Réponses: 16
    Dernier message: 30/01/2006, 10h48

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