QuickBasic Tutorials Diese Seite soll das nicht unwichtige Thema Programmoptimierung ein wenig "beleuchten". Es existieren mehrere Anleitungen und Bücher in denen beschrieben wird, wie ein optimiertes Programm aussehen sollte. Meiner Meinung nach ist das alles ausgemachter Blödsinn. Programmoptimierung ist ein so vielschichtiges Thema das niemand sich erdreisten sollte zu meinen er hätte die umfassende Lösung für dieses Problem. Zunächst einmal stellt sich die Frage wen es betrifft. Ein Programmieranfänger ist schon froh wenn sein Programm überhaupt läuft. Wenn es das dann auch noch fehlerfrei tut - um so besser. An eine Optimierung des Quellcodes denkt er dabei wenig. Das ist auch nicht nötig. Früher oder später, vorzugsweise beim Ansteigen des Schwierigkeitsgrades der Software, merkt jeder von allein, daß man seine Arbeit ein wenig planen sollte. So entwickelt jeder seine ganz eigene Strategie wie er die Arbeit in logische Segmente aufteilt, damit sein Programm nicht im Spaghetti-Code endet. Das ergibt so eine Art "Handschrift" für jeden Programmierer. An ein paar allgemeine Regeln sollte jedoch jeder denken:
Ich hoffe ich bin nicht in einen Belehrungston verfallen ;-) Das Allerwichtigste ist natürlich: "HAB SPASS, jede Menge Gummibärchen und Kaffee !!!" Neben strukturellen und logischen Optimierungen deines Quellcodes, gibt es einige mathematische Regeln die du dir merken oder aufschreiben solltest. Insbesondere bei zeitkritischen Anwendungen könnte dir das womöglich weiterhelfen. Einige Mathematische Optimierungstipps: Verwende besser Ganzzahlen (Variable%) als Lange Ganzzahlen (Variable&) Verwende besser Lange Ganzzahlen (Variable&) als Einfache Genauigkeit (Variable!) Verwende besser Einfache Genauigkeit (Variable!) als Doppelte Genauigkeit (Variable#) Auch wenn sonst "PUNKT vor STRICH" geht, bei der Programmierung ist es genau umgekehrt. Also besser A + A als A * 2 und A * A als A ^ 2 Eine DIVISION von INTEGER-Variablen geht schneller mit A \ B als mit INT(A / B) IF X AND 1 = 1 THEN "Ungerade", oder IF X MOD 2 = 1 THEN "Ungerade" ist schneller als IF INT(X / 2) <> (X / 2) THEN "Ungerade" Der Austausch zweier Variableninhalte geht schneller mit SWAP A, B als über eine 3.Variable: C = A : A = B : B = C Einige Optimierungstipps zum Thema Grafik: Will man Grafiken flüssig über den Bildschirm huschen lassen, sollte man unbedingt auf den Strahlrücklauf des Monitors warten. Beispiel Um die Pixel schnellstmöglich auf den Screen zu bekommen, nimmt man am Besten den POKE-Befehl anstelle einer PSET-Anweisung. Denn einen POKE-Befehl kennt die Maschinensprache bereits, ein PSET muss erst übersetzt werden. Beispiel Sind größere Grafiken zu bewegen, benutzt man besser die PUT-Anweisung, anstatt die Pixel einzeln zu "POKEn". Beispiel Die PUT-Anweisung hat neben der Geschwindigkeit auch noch einen anderen Vorteil. Sie kann mit einem Trick auch transparente Grafiken darstellen. Hierfür benötigt man jedoch eine Negativmaske des Originalbildes. Beispiel Hierzu gibt es auch noch ein extra Tutorial zum Thema Sprites. Ein gut aussehender grafischer Effekt ist das Spiel mit den Farben. Der PALETTE-Befehl ist jedoch sehr langsam und kompliziert. Besser ist der Umgang mit den ROT-GRÜN-BLAU Werten (RGB) der einzelnen Farben. Beispiel Optimaler Umgang mit der Tastatur: Der INKEY$-Befehl für eine Tastaturabfrage ist bei einigen Programmen viel zu langsam. Um der Tastatur gehörig "BEINE" zu machen, muss man sie schon direkt abfragen und dabei BIOS und Betriebssystem umgehen. Die INP-Funktion ist der schnellste Weg an die Taste zu gelangen, wenn man keinen neuen Tastaturhandler einbauen möchte. Beispiel Bei der Abfrage der Cursor-Tasten eines Laptop, bekommt man bei eingeschaltetem NUM-LOCK leider falsche Werte. Um den Tastaturstatus zu ändern oder abzufragen, bedient man sich eines kleinen Tricks. Beispiel |
|||