Worauf mussman achten um das eigene programm so effizient wie möglich zu machen? ich weis das ist ne ziemlich algemeine frage aber trotzden wäre jede antwort sehr wilkommen. PS: was ist besser if(strncmp_PP(g_CfgHtmlLine+Trans->j,"%P",2) == 0) oder if(*(g_CfgHtmlLine+Trans->j) = '%' && *(g_CfgHtmlLine+Trans->j) = 'P')
Gast
#1200765
Compilier es doch erstmal und schau das Assembler Listing an.
Gast
#1200770
>if(*(g_CfgHtmlLine+Trans->j) = '%' && *(g_CfgHtmlLine+Trans->j) = 'P')
enthält gleich zwei Fehler ...
1 | |
ist viel schneller, da der Compiler erkennen wird, das j nicht gleichzeitig % und P sein kann. Also optimiert er die Zeile, und dazu gleich noch den ganzen if-Block, weg. Allerdings ist das wohl nicht exakt das, was du eigentlich wolltest. Oliver
Gast
#1200772
@ Trax Das Problem mit Deinem vorgeschlagenen Code
1 | |
ist, das er so in keinem Fall funktioniert. Es fehlt die Indizierung der Elemente des Vektors j und der korrekte Operator für einen Vergleich:
1 | |
Danach scheinst Du noch eine Wegstrecke von der Fragestellung "wie programmiere ich optimal" entfernt zu sein. Am besten lernst Du überhaupt erstmal (in C) programmieren.
Ich kann C sogar recht gut, ich habe nur die ganz böse Angewohnheit, alles schnell schell zu machen und Sachen zu posten ohne sie zu testen, Bei genauerer Betrachtung der 2 von mir geposten Zeilen sollte auch auffallen das *(g_CfgHtmlLine+Trans->j) nicht funktionieren kann da g_CfgHtmlLine eine prog_char array ist den oben benutze ich ja strncmp_PP in dem original code benutzte es müsste schon pgm_read_byte(g_CfgHtmlLine+Trans->j) sein ;) also noch mal die frage was ist besser
1 | |
oder
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
diesmal ein auszug aus meinem und getestetem funktionierendem code, aufruf ist
1 | |
letzten Endes gibt es immer nur eine Möglichkeit deine Frage zu beantworten: Probier beide Varianten aus und miss die Laufzeit Alles andere ist Kaffeesatzleserei. Allerdings: Mit solchen Low-Level Optimierungen gewinnt man meistens nicht die Laufzeit. Algorithmische Optimierungen sind meist viel zielführender. Ob eine Anweisung, die 2 mal in der Sekunde ausgeführt wird, um 20 Millisekunden schneller wird oder nicht, spiel global gesehen so gut wie keine Rolle. Erste Grundregel der Optimierung: Stelle fest wo deine Rechenzeit verbraten wird. Nicht raten, nicht glauben ... sondern messen! Alles andere ist sinnlos.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.