Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
lehrkraefte:blc:informatik:ffprg2-2020:esp32-io-and-vars [2020/08/12 10:23] Ivo Blöchliger [Ganzzahl-Typen] |
lehrkraefte:blc:informatik:ffprg2-2020:esp32-io-and-vars [2020/08/12 11:39] Ivo Blöchliger |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Typen ====== | ====== Typen ====== | ||
Alles in C++ muss einen Typ haben. Der Typ einer Variablen kann nicht geändert werden. | Alles in C++ muss einen Typ haben. Der Typ einer Variablen kann nicht geändert werden. | ||
- | ===== Ganzzahl-Typen ===== | + | ===== Zahl-Typen ===== |
Die Typen '' | Die Typen '' | ||
Line 9: | Line 9: | ||
* **float** und **double** Fliesskommazahlen, | * **float** und **double** Fliesskommazahlen, | ||
* **bool** true oder false | * **bool** true oder false | ||
- | * **char** | + | * **char** |
+ | |||
+ | ==== Speicherbedarf und Umfang ==== | ||
<code c++> | <code c++> | ||
Line 46: | Line 48: | ||
</ | </ | ||
+ | ==== Rechengeschwindigkeit ==== | ||
+ | <code c++> | ||
+ | #define RUN(TYPE, FORMAT) addtest< | ||
+ | #define RUM(TYPE, FORMAT) multest< | ||
+ | |||
+ | template< | ||
+ | void addtest(int n, char *t, char *f) { | ||
+ | long zeit = micros(); | ||
+ | // volatile bezeichnet Variablen, die z.B. von Interrupts verändert werden könnten. | ||
+ | // Damit kann der Kompiler keine Optimierungen machen, weil sich der Wert ausserhalb | ||
+ | // des normalen Programmflusses ändern könnte. | ||
+ | volatile T r = 0; // Damit das Ding nicht wegoptimiert wird. | ||
+ | volatile T a = 3456; // Damit das Ding nicht wegoptimiert wird. | ||
+ | for (int i=0; i<n; i++) { | ||
+ | r = r+a; | ||
+ | } | ||
+ | zeit = micros()-zeit; | ||
+ | Serial.printf(" | ||
+ | // Wenn das Resultat nicht gebraucht wird, wird die ganze Schleife | ||
+ | // gnadenlos wegoptimiert ;-) | ||
+ | Serial.print(" | ||
+ | Serial.printf(f, | ||
+ | Serial.println(); | ||
+ | } | ||
+ | |||
+ | template< | ||
+ | void multest(int n, char *t, char *f) { | ||
+ | long zeit = micros(); | ||
+ | volatile T b = 27; // Damit das Ding nicht wegoptimiert wird. | ||
+ | volatile T r = 0; // Damit das Ding nicht wegoptimiert wird. | ||
+ | T a = 5234; | ||
+ | for (int i=0; i<n; i++) { | ||
+ | r = a*b; | ||
+ | } | ||
+ | zeit = micros()-zeit; | ||
+ | Serial.printf(" | ||
+ | // Wenn das Resultat nicht gebraucht wird, wird die ganze Schleife | ||
+ | // gnadenlos wegoptimiert ;-) | ||
+ | Serial.print(" | ||
+ | Serial.printf(f, | ||
+ | Serial.println(); | ||
+ | } | ||
+ | |||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(115200); | ||
+ | delay(200); | ||
+ | Serial.print(" | ||
+ | RUN(int, " | ||
+ | RUN(long long, " | ||
+ | RUN(float, " | ||
+ | RUN(double, " | ||
+ | | ||
+ | Serial.println(); | ||
+ | | ||
+ | RUM(int, " | ||
+ | RUM(long long, " | ||
+ | RUM(float, " | ||
+ | RUM(double, " | ||
+ | |||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // tu nix | ||
+ | } | ||
+ | </ |