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

Arduino Discussion :

Quantité de variables globales annoncée par le compilateur


Sujet :

Arduino

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 71
    Points : 50
    Points
    50
    Par défaut Quantité de variables globales annoncée par le compilateur
    Bonjour, j'aurai besoin d'une précision sur la quantification des variables globales lors de la comiplation
    J'avais en tête qu'au moment de la déclaration les octets étaient réservés dans la RAM donc étaient comptabilisés lors de la compilation
    Idem pour les tableaux.
    Or en travaillant sur l'optimisation des variables sur un projet, je me suis rendu compte
    que le simple fait d'initialiser des tableaux augmentait le nombre d'octets des variables globales utilisées (lors de la compilation)
    ex:
    j'ai un programme qui fait 31246 octets avec 1781 octets de variables globales.
    j'ai en autre ces tableaux declarés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    unsigned int timerL[48];                  
    unsigned long debut_timerL[48];             
    byte timerL_en_cours[6];        
    unsigned int timerR[32];                
    unsigned long debut_timerR[32];          
    byte timerR_en_cours[4];

    Si dans le setup , j'initialise ces tableaux avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     for (byte i=0; i<6; i++)
        {timerL_en_cours[i] =0;
        }
     for (byte i=0; i<4; i++) 
        { timerR_en_cours[i] =0;
        }
     
     for (byte i=0; i<48; i++)      
        {timerL[i]=0;
        debut_timerL[i]=0;             
        }
     for (byte i=0; i<32; i++)     
       {timerR[i]=0;                 
        debut_timerR[i]=0;        
        }

    le compilateur me dit maintenant 2273 octets de variables globales .

    Je ne comprends pas puisque ces tableaux étaient déclarés donc la place en mémoire réservée ?
    Qu'est ce qui m'échappe ?
    Merci d'avance de votre éclaircissement

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 380
    Points : 19 062
    Points
    19 062
    Par défaut
    Salut Beche.

    Si vous désirez optimiser votre code, le mieux est de travailler en assembleur.

    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 329
    Points : 4 146
    Points
    4 146
    Par défaut Ne s'use que si on s'en sert
    Bonjour,

    La déclaration suppose 490 octets. La différence est de 2273- 1781 = 492.

    Si les variables ne sont pas utilisées le compilateur peut les retirer arbitrairement (selon niveau d'optimisation).

    Les 2 octets de différence pourraient correspondre à la variable i si elle est déclarée en global.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/06/2012, 15h30
  2. Variable Globale vu par toutes les pages
    Par wise_mind dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 04/06/2009, 11h50
  3. Réponses: 1
    Dernier message: 03/05/2009, 20h55
  4. Réponses: 18
    Dernier message: 31/05/2006, 17h48
  5. Supprimer la mémoire utilisée par les variables globales
    Par dnaprotector dans le forum OpenGL
    Réponses: 4
    Dernier message: 21/07/2005, 13h18

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