Benutzer-Werkzeuge

Webseiten-Werkzeuge


becki:linux:cpp

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
becki:linux:cpp [2009-05-15 08:42]
becki
becki:linux:cpp [2009-06-15 14:35] (aktuell)
becki
Zeile 1: Zeile 1:
 ====== C++ == ====== C++ ==
-===== Rules of Thumb ==+===== Guidlines for efficient C/C++ Code ==
  
-  - Pass and return primitives as value to and from functions +  - Pass and return primitives ​//as value// to and from functions ​[Breymann] p177 ,[Davis] 
-  - Pass objects as const reference to functions and omit ''​const''​ only when the function is designed to modify the object +  - Pass objects as const reference to functions and omit ''​const''​ only when the function is designed to modify the object ​[Breymann] p177 
-  - Return objects which are attributes of the class as const reference and objects wich are //not// class attributes (especially stack objects) as value! +  - Return objects which are attributes of the class as const reference and objects wich are //not// class attributes (especially stack and heap :?: objects) as value! ​ ​[Breymann] p177 
-  - Prefer references to pointers +  - Prefer references to pointers. References (and reference types) are just syntactic sugar for pointers and do not cause runtime overhead [Breymann?​],​ [Quiroz] 
-  - Encapsulate ​''​new''​ and ''​delete''​ in the constructor and destructor of a class+  - To avoid memory leaks encapsulate ​''​new''​ and ''​delete''​ in the constructor and destructor of a class. Than create the instance of the class as automatic variable. [?]
   - Always declare constant primitives and objects with ''​const''​   - Always declare constant primitives and objects with ''​const''​
 +  - ''​int''​ is the most efficient type for local variables. (No filling with zero's necessary) [Davis]
 +  - Use ''​stdint.h''​. It offers... [Davis]
 +    * exact length types
 +    * smallest types of at least given length and
 +    * most efficient types
 +  - Larger data types as ''​int''​ are less efficient [Davis]
 +  - Use the ''​size_t''​ and ''​ptdiff_t''​ types for memory calculations,​ not the ''​long''​ type [Davis]
 +  - Unsigned types tend to be more efficient then signed [Davis]
 +  - Plain ''​char''​ is always the most efficient char type. For signed or unsigned char it depends on the target which one is more efficient. [Davis]
 +  - Declare global data and functions as ''​static''​ whenever possible but avoid ''​static''​ variables at function level whenever possible [Davis]
 +  - :?: Use the ''​restrict''​ keyword for data that is modified by one certain pointer [Davis]
 +  - Declare variables in the innermost scope possible [Davis]
 +  - Prefer float types to double (Use ''​3.0f''​ instead of ''​3.0''​ and ''​sinf()''​ instead of ''​sin()''​) [Davis]
 +  - It most often more efficient to use the stack rather than the heap for variable length arrays. FIXME Expamle! [Davis]
 +  - Declare a function as inline when it is... [Davis]
 +    * small
 +    * called very often from few places (e.g. inside a loop)
 +  - Use a ''​mutex''​ for concurrent data access [Obiltschnig]
 +  - Do not use exceptions in realtime / embedded systems. They may have non-deterministic runtime behauviour. Use [[becki/​coding/​c#​error_reporting_in_functions|goto]] as alternative. [Obiltschnig],​ [Quiroz]
 +  - Use consts rather than preprocessor defines [Quiroz]
 +  - To avoid name collisions use namespaces rather than prefixes or classes [Quiroz]
 +  - Aviod Run-Time Type Identification (RTTI) at least for  realtime / embedded systems [Quiroz]
 +
 +===== References ==
 +
 +| [Breymann] | Ulrich Breymann. C++ Einführung und professionelle Programmierung |
 +| [Davis] | Greg Davis. Guidlines for efficient C/C++ Code. Lecture at the "​Embedded Systems"​ fair in Nuremberg 2009-03-04 |
 +| [Obiltschnig] | Günter Obiltschnig. C++ for Safety-critical Systems. Lecture at the "​Embedded Systems"​ fair in Nuremberg 2009-03-04 |
 +| [Quiroz] | César A Quiroz. Using C++ Efficiently In Embedded Applications. Mentor Graphics, Embedded Software Division |
 +
becki/linux/cpp.1242376948.txt.gz · Zuletzt geändert: 2009-05-15 08:42 von becki

Impressum - Datenschutzerklärung