Modifications

Sauter à la navigation Sauter à la recherche
Ligne 79 : Ligne 79 :     
== Réduire les variables surdimensionnées ==
 
== Réduire les variables surdimensionnées ==
Don't use a float when an int will do. Don't use an int when a byte will do. Try to use the smallest data type capable of holding the information.  
+
N'utilisez pas un "float" lorsqu'un "int" suffirait. N'utilisez pas un "int" si un "byte" convient.  
 +
 
 +
Essayez d'utiliser le plus petit type de donnée capable de contenir l'information.  
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Ligne 121 : Ligne 123 :     
== Pensez globalement. Allouez localement ==  
 
== Pensez globalement. Allouez localement ==  
Let's have another look at how SRAM is used (and abused):
+
Revenon sur notre diagramme d'utilisation (et d'abus) de la SRAM:
    
{{ADFImage|Arduino-Memoire-41.jpg|480px}}
 
{{ADFImage|Arduino-Memoire-41.jpg|480px}}
Ligne 128 : Ligne 130 :  
=== Variables Globales et Statiques ===
 
=== Variables Globales et Statiques ===
   −
Global and Static variables are the first things loaded into SRAM. They push the start of the heap upward toward the stack '''and they will occupy this space for all eternity'''.
+
Les variables globales et statiques sont les premières variables à être chargées en SRAM. Elle repousse le début de la ''heap'' (le tas) vers la ''stack'' (la pile) '''et occuperont cet espace pour l'éternité'''.
   −
=== Dynamic Allocations ===
+
=== Allocations dynamiques ===
Dynamicaly allocated objects and data cause the heap to grow toward the stack. Unlike Global and Static variables, these variables can be de-allocated to free up space. '''But this does not necessarily cause the heap to shrink!''' If there is other dynamic data above it in the heap, the top of the heap will not move. When the heap is full of holes like swiss cheese we call it a "'''fragmented heap'''".
+
L'allocation dynamique des données et objets fait grandit la ''heap'' (tas) en direction de la ''stack'' (tas).
 +
 
 +
Au contraire des variables globales et statiques, ces variables peuvent être désallouée (de-allocated) pour libérer de l'espace mémoire. '''Mais cela n'implique pas forcement une diminution/réduction de la taille de la ''heap'' (tas)!'''. S'il y a d'autre données dynamiques au dessus de la désallocation, le dessus de la ''heap'' (tas) ne bouge pas. Lorsque la ''heap'' (tas) est plein de trou comme un fromage suisse on dit que la "'''heap est fragmenté'''".
    
=== Variables Locales ===
 
=== Variables Locales ===
Every function call creates a stack frame that makes the stack grow toward the heap. Each stack frame will contain:
+
Chaque appel de fonction crée un "stack frame" qui contient des informations importantes (critiques) lors du retour d'appel de fonction. Ce "stack frame" est empilé sur la ''stack'' (la pile) avant l'appel de fonction ce qui fait grossir la ''stack'' qui se rapproche de la ''heap'' (le tas).
 +
 
 +
Chaque "stack frame" contient:
   −
* All parameters passed to the function
+
* Tous les paramètres passés à la fonction
* All local variables declared in the function.
+
* toutes les variables locales déclarées dans la fonction
   −
This data is usable within the function, but '''the space is 100% reclaimed when the function exits'''!
+
Ces données sont utilisables à l'intérieur de la fonction, mais '''l'espace est récupéré à 100% à la sortie de la fonction'''!
    
=== Les bons trucs! ===
 
=== Les bons trucs! ===
* '''Avoid dynamic heap allocations''' - These can quickly fragment the limited heap-space.
+
* '''Evitez les allocation dynamiques sur la heap''' - Elle peuvent rapidement fragmenter l'espace disponible pour la ''heap'' (tas).
* '''Prefer local to global allocation''' - Stack variables only exist while they are being used. If you have variables that only are used in a small section of your code, consider making that code into a function and declaring the variables local to the function.
+
* '''Préférez les allocations locale aux allocations globales''' - les variables sur la ''stack'' pile n'existent que durant leur utilisation. '''SI''' vous avez des variables qui ne sont utilisées que dans une petite section de votre code '''ALORS''' considérez l'utilisation d'une fonction avec cette variable déclarée dans la fonction.
    
{{Arduino-Memoire-TRAILER}}
 
{{Arduino-Memoire-TRAILER}}
29 917

modifications

Menu de navigation