Stefan Heimers Homepage | ||
|
Sprachen »de« en Blog Über mich Fotos Zürich Ferien Skiferien 2008 Glarus 2005 Basel Elektronik VCR N1700 VCR-Pflege Video-Optokoppler Telefongebührenzähler UKW Sender Vorverstärker Radios Akkord Pinguin Philette 837A Reparaturen SVR4004EL JVC HR-S6800E Riemenmasse PWM-Verstärker IR Verlängerung Telefonmikro Videoverstärker Nuvistor Software KDE Basler Dialekt sp504write Optimierung für Programmierer Linker KISS »Bedingte Anweisungen Compilercache Profiler Beispiel Ganz schlimm! Compileroptionen Zeichenketten für Administratoren Debugcode entfernen Defragmentieren Partitionieren für Anwender Programmauswahl Windowmanager Links sbt shcms Dieser Server Sunday Webserver Flohmarkt Elektr. Bauteile ICs digital Delay Lines ICs analog Transistoren LEDs PC-Zubehör Humbug Radioerinnerungen Regio FM Radio DRS SWF3 Radio One (St. Louis bei Basel) Radio Europa Andere Sender Gästechat Benutzerkonto
|
Vergleiche und bedingte AnweisungenZahlen oder WörterVergleichsoperationen mit Zahlen sind im allgemeinen schneller als mit Wörtern. Beim Vergleich von Zahlen muss nur eine Instruktion ausgeführt werden. Beim Vergleich von Wörtern muss in einer Schleife jeder Buchstabe einzeln verglichen werden. Falls Zahlen im Sourcecode zu unübersichtlich sind ist es möglich mit #define Statements Wörtern Zahlen zuzuordnen. Damit kann der Programmierer im Programmcode Wörter benutzen. Der Preprocessor wandelt diese in entsprechende Zahlen um die dann in den Programmcode eingebettet werden. Ein Beispiel:
int operation;
Dies ist für den Compiler identisch zu folgendem code und somit viel schneller als ein Textvergleich mit strcmp(). Die Wörter DELETE,OPEN und RENAME werden noch vor der Kompilierung durch die Zahlen 1, 2 und 3 ersetzt.
int operation;
Reihenfolge der Optionen in switch()-statementsEin Beispiel:
int jahrgang;
Die switch() anweisung wird bei der ersten "break" Anweisung nach einem Treffer beendet. Es dauert also länger, alle Vergleiche bis zum letzten case-statement durchzugehen, als gleich beim ersten abzubrechen. Deshalb ist es im obigen Beispiel ratsam, häufig auftretende Jahreszahlen zuerst zu behandeln, und seltene erst später. Somit kann man manche unnötige Vergleichsoperation einsparen. Erwartet man also zur Laufzeit viele 1992er Jahrgänge und nur sehr wenige 1990er, so ist es ratsam obigen Code wie folgt umzuordnen:
int jahrgang;
if und else ifWerden mehrere if()-Statements nacheinander behandelt, von denen nur eines zutreffen kann, so ist es ratsam, für alle ausser dem ersten "else if" statt nur "if" zu verwenden. Somit werden unnötige Vergleiche verhindert nachdem eine erfüllte Bedingung gefunden wurde. Auch hier sollte auf die optimale Reihenfolge geachtet werden: Was häufiger zutrifft soll zuerst behandelt werden. © 2001 by Stefan Heimers |
Kürzlich geändert
Reparaturen (de) 2012-01-20 11:47:41 Radioerinnerungen (de) 2011-11-14 12:25:22 VCR N1700 (de) 2011-10-30 10:21:09 Radio One (St. Louis bei Basel) (de) 2011-09-02 21:50:07 ICs digital (de) 2011-09-02 21:14:09 Videoverstärker (de) 2011-08-07 18:13:52 |