Hallo Siro,
das: "sizeof(Timers) / sizeof(TTimeValue)" würde ich aus der For-Schleife raus nehmen und das Ergebnis in eine Variable packen.
Code:int irgendwas = sizeof(Timers) / sizeof(TTimeValue);
und die Schleife dann so ändern:
Evtl. funktioniert das ja auch noch mit "const" als Konstante, das weiß ich nicht an der Stelle.Code:for (i=0; i< irgendwas; i++)
Es sei denn, der Compiler würde das selbst optimieren. Sonst hättest Du bei jedem Schleifendurchlauf die Berechnung drin, deren Ergebnis sich nie ändert. Mit den verlorenen Taktzyklen kann man was anderes anfangen.
MfG
@Moppi:
Hatte ich Anfangs auch bedenken, aber wie HaWe schon schreibt, der Compiler setzt da eine Konstante ein.
Er macht selbst die Vorrausberechnung, das habe mir im Assemblercode vei verschiedenen Compilern jeweils angesehen.
Grade bei meinen kleinen PICs mit wenig Speicher, bin ich da immer am gucken was der Compiler für Code erzeugt,
Siro
Ich danke euch Allen erst einmal vielmals für die konstruktiven Antworten und Hinweisen.
Mit diesem Bsp spiele ich derzeit - muss dann in den nächsten Tagen auf meine zukünftig mutiplen Bedürfnisse angepasst werden.
__________________________________________________ _
| Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |
Sag ich doch dauernd...bemüh mal die Suche hier im Forum, ich hatte neulich erst Auszüge eines Codes gepostet, den ich benutze- der basiert auf dem Beispiel, kann aber _etwas_ mehr als nur ein Lichtlein blinken lassen.
Man muss sich aber darüber im klaren sein, dass diese Herangehensweise auch ihre Grenzen hat.
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Nebenfrage:
Gibt es zwischen den beiden folgenden Codes irgend einen sinnvollen Unterschied?
Ich sehe häufig;
kann aber folgendes leichter/schneller lesen;if (millis() - StartZeit >= Dauer)
if (millis() >= StartZeit + Dauer)
__________________________________________________ _
| Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |
Lesezeichen