Möglichkeiten um Laufzeit einzuspaaren

Gast #2412108
Lesenswert?
• ▲
▼
Hallo Leute,

ich will alle Möglichkeiten in Betracht ziehen um Laufzeiten (SW) auf 
einen Steuergerät einzuspaaren.

1) Funktion inline definieren

2) Optimierungsstufen ändern

3) Zugriff auf Controller-Register (Treiber-SW) mit Assembler-Code 
realisieren.

4) Wenn ein ext. Flash-Baustein verwendet wird dann sollten nur 
Funktinen ausgelagert werden, die nicht so oft in der SW benutzt werden. 
Da der Zugriff über Kommunikations-Bus (SPI oder paraller Bus) länger 
dauert als auf den int. Flash.

Ich würde gerne alle Tricks der Laufzeiteispaarungen kennenlernen!!!
Kennt Ihr auch andere Möglichkeieten?

Bitte betrachtet nicht nur den uController sondern das ganze System 
(Embedded System) mit HW(siehe Beispiel 4))

Danke!
Gast #2412128
Lesenswert?
• ▲
▼
Code aus externem Flash ausführen? Naja, kopiert man sowas nicht während 
des bootens in ein externes RAM?

OK, also: Häufig genutzte Funktionen im "schnellen" Codespeicher 
ausführen, falls Controller das zulässt.
Häufig genutzte Variablen in Registern halten wenn möglich.
Die Peripherie im Controller ausnutzen. Es gibt je nach 
Controller/Prozessor zusätzliche Hardware die einem arbeit und 
Rechenleistung abnehmen kann (z.B. CRC Generatoren oder DMA)

Datentypen!!! Es muss nicht immer int32 oder float sein!
Generell alle Arithmetischen Operationen genau prüfen. Oft kann z.B. 
eine Division vermieden werden.

Ich denke das Thema füllt ganze Bücherregale...
Gast #2412174
Lesenswert?
• ▲
▼
P.W. schrieb:
> ich will alle Möglichkeiten in Betracht ziehen um Laufzeiten (SW) auf
> einen Steuergerät einzuspaaren.

Gegenfrage: Warum?

Nicht umsonst gibt es dazu einige Erfahrungsregelen
"premature optimization is the root of all evil"
"Profile Before Optimizing"

usw.

Und "generelle" Optimierungsmöglichkeiten gibt für jede denkbare 
Architektur und jeden denkbaren Compiler nicht.


Oliver
#2412177
Lesenswert?
• ▲
▼
ich schrieb:
> Ich denke das Thema füllt ganze Bücherregale...

Da liegt das Problem, in jedem Buch steht nur ganz wenig von dem drin, 
was man gerade gebrauchen könnte. Das Thema ist so vielschichtig, das 
geht nicht nach 'Schema F'.

@ P.W.
zu deinen vier Punkten könnte vielleicht der eine oder andere noch 
dazukommen, aber die Lösung dazu wird sehr oft von der speziellen 
Situation abhängen.
#2412197
Lesenswert?
• ▲
▼
P.W. schrieb:
> Ich würde gerne alle Tricks der Laufzeiteispaarungen kennenlernen!!!

Das mit Abstand größte Einsparpotential hat man bei der 
Programmablaufplanung.
Man muß analysieren, welche Funktionen sind (zeitlich) teuer und wie oft 
müssen sie minimal aufgerufen werden.

Eine gute Planung ist also das A und O.
Das blanke Coden bringt dann nur noch geringe Einsparmöglichkeiten.

Wer aber sofort mit "int main(){..}" anfängt, hat schon verloren.
Kopflos drauflos zu programmieren bringt nur undurchsichtigen 
Spaghetticode zum Vorschein.


Peter
Gast #2412210
Lesenswert?
• ▲
▼
@ Oliver: Ich höre oft bei der Steuergeräteprogrammierung, dass die 
Laufzeiten überschritten werden. Ich hatte das Problem auch schon mal 
erlebt. Es gibt natürlich ein paar Standard-Tipps dazu, aber an die 
wirklichen Know-How-Tipps kommt man als Anfänger nicht.
Nun, wollte ich mich weiterbilden und erfahrene Programmierer oder 
Steuergeräteentwickler befragen. Um sozusagen ein Schema F für alle 
Unerfahrene aufzusetzen.

Nun frage ich mich: Wie soll ich dann in Zukunft das Problem angehen?

Gibt es passende Literatur dazu?

Grüße P.W.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren