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 :

Différence entre accès direct et par le biais d'une struct


Sujet :

C

  1. #1
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut Différence entre accès direct et par le biais d'une struct
    Bonjour.

    Je suis actuellement en train d'essayer d'implémenter du code "hautes performances".

    Ma question porte sur un problème de "propreté". En effet, j'ai le choix entre mettre plusieurs variables dans une struct (globale) ou bien toutes les déclarer en global.

    Ma question est : y'a t'il une différence entre accéder à une variable directementou par le biais d'une struct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ++mon_instance_de_ma_struct.Ma_variable;
    ?

    Merci
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Si tu mets l'accent sur la question de propreté du code, essaye d'abord de supprimer les variables globales.

    Quant à l'utilisation d'une structure pour grouper des données, cela se justifie (et même s'impose) si ces données ont un rapport direct entre elles de telle façon que la structure en elle-même représente alors quelque chose (elle met en évidence le lien entre ces données).

    Un avantage non négligeable peut être le passage de l'adresse de cette structure (et non la structure elle-même) aux fonctions pour leur permettre l'accès à ses données (naturellement cet argument tombe pour une structure globale !).
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par diogene Voir le message
    Si tu mets l'accent sur la question de propreté du code, essaye d'abord de supprimer les variables globales.
    Dans mon cas, le compilateur limite la quantité de variables déclarable à l'interieur d'une fonction... donc bon, j'ai pas trop le choix.

    Citation Envoyé par diogene Voir le message
    Quant à l'utilisation d'une structure pour grouper des données, cela se justifie (et même s'impose) si ces données ont un rapport direct entre elles de telle façon que la structure en elle-même représente alors quelque chose (elle met en évidence le lien entre ces données)..
    c'est évidemment le cas.

    Citation Envoyé par diogene Voir le message
    Un avantage non négligeable peut être le passage de l'adresse de cette structure (et non la structure elle-même) aux fonctions pour leur permettre l'accès à ses données (naturellement cet argument tombe pour une structure globale !).
    j'utilise également cette structure pour ça, mais j'ai besoin d'une instance de celle-ci en global. or les acces à cette instance sont ultra-fréquente donc s'il est plus rapide d'accéder à une variable globale qu'a un membre d'une variable globale, je n'hésiterais pas à multiplier mes globales.


    merci.
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    j'utilise également cette structure pour ça, mais j'ai besoin d'une instance de celle-ci en global. or les acces à cette instance sont ultra-fréquente donc s'il est plus rapide d'accéder à une variable globale qu'a un membre d'une variable globale, je n'hésiterais pas à multiplier mes globales.
    Je ne pense pas qu'il y ait de différence : le compilateur sait où se trouve la structure globale et donc où se trouvent placés ses différents champs, tout comme il sait où se trouve une variable globale "simple" .
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    Merci.

    Juste pour être sûr : mon compilateur est un compilateur HI-TECH pour PSoC (c'est un µproc). C'est valable aussi ?
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  6. #6
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    La question de l'accès à une grandeur est uniquement la question du calcul de son adresse. Or dans les deux cas, variable globale "simple" ou champ d'une structure globale, cette adresse peut être déterminée de la même façon par le compilateur. Je ne vois aucune différence à ce niveau entre les deux situations.

    Maintenant, la réponse reste enfouie dans les détails d'implémentation du compilateur. Si tu n'est pas sûr, tu peux toujours tester les deux versions.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  7. #7
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    ok, merci.

    J'éditerais ce post le test fait
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Le mieux, c'est de demander au compilo de générer un fichier assembleur (s'il le permet), histoire de voir la manière qu'il compile les deux versions. Au pire, de désassembler chacun des fichiers compilés.
    Mais en principe, comme cela a été dit, cela ne devrait faire aucune différence en passant par une variable ou par un membre de structure.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. différence entre adressage direct et immédiat ?
    Par Ziineb dans le forum Assembleur
    Réponses: 2
    Dernier message: 02/12/2012, 03h11
  2. Réponses: 3
    Dernier message: 13/03/2012, 16h53
  3. Réponses: 1
    Dernier message: 09/09/2008, 19h35
  4. Quelle différence entre Accès bureau à distance et le mode TSE
    Par DPILLIN dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 30/05/2008, 13h53
  5. interaction entre plusieur script python par le biai d'internet
    Par yggdrazil dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 01/11/2006, 14h36

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