Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
helium

Anmeldungsdatum: 10.09.2004 Beiträge: 397 Wohnort: Leverkusen
|
Verfasst am: 14.01.2005, 21:10 Titel: |
|
|
Natürlich war das nicht ganz ernst gemeint, aber irgendwie ist da schon was dran. Man sieht immer wieder Leute, die dann irgendwelche total bescheuerten Konstrukte bauen, nur weil der dumme alte QB-Interpret (und auch der Compiler) dann einen Tick schneller laufen. Das ordentliche Compiler das hunderfache herausholen, obwohl man sauber und ordentlich arbeitet wissen sie gar nicht.
Und wenn man ein paar Jahre mit QB gearbeitet hat, gewöhnt man sich solche albernheiten irgendwann so fest an, das es schwer sein wird davon los zu kommen.
Natürlich zwingt QB nicht dazu so zu programmieren, aber es verleitet dazu, da es nunmal gähnen langsam ist und man so zmindest ein winzig kleines Bischen an Geschwindigkeit erhält. _________________ Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit. |
|
Nach oben |
|
 |
helium

Anmeldungsdatum: 10.09.2004 Beiträge: 397 Wohnort: Leverkusen
|
Verfasst am: 14.01.2005, 21:12 Titel: |
|
|
Vorwarnung: meine letzte antwort ist wiedermal etwas extrem forumliert  _________________ Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit. |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 16.01.2005, 18:50 Titel: Wieso eigentlich immer schnell schnell? |
|
|
Wieso Optimieren Leute Programme die für Dos und 100 Mhz Rechner kozipiert sind, eigentlich krampfhaft wenn sie Windows XP mit 2Ghz benutzten?
Da stimmt doch das Verhältnis nicht!
Ich bin der Meinung das man Programme die unter eine Sekunde pro Durchlauf "verbrauchen" gar nicht durch irgendwelche Tricks beschleunigen soll! (Optimierungen sind aber denoch erlaubt wenn sie die Übersichtlichkeit nicht verringern oder gar erhöhen)
Und die Theorie möglichst wenig Zeilen=schneller Code
geht eh nicht auf oder schreibt ihr jemand zwanzig Befehle mit Doppelpunkt verbunden auf eine Zeile und meint dann das sei schnell?
Michael Frey
P.S. wer immer schnellst möglich Code braucht, kann ja alle frei verfügbaren Basic Compiler bei jedem einzelem Projekt durch Probieren welcher nun 10% Prozent (von 0.1 Sekunden) schneller ist.
Oder gleich passend: man nehme ein Dos Bootdisk und starte damit ein QB Programm auf einem übertakten 2 GHz rechner ... |
|
Nach oben |
|
 |
stef
Anmeldungsdatum: 13.01.2005 Beiträge: 102
|
Verfasst am: 17.01.2005, 12:05 Titel: |
|
|
Dusky_Joe hat Folgendes geschrieben: | statt
IF a <> 0 THEN
PRINT "Wert wird geprüft..."
CALL TESTWERT
END IF
ist es in dieser Bedeutung eleganter, zu schreiben
IF a THEN PRINT "Wert wird gerprüft": TESTWERT |
Ich lasse auch gerne mal das <> 0 weg. Vor allem wenn ich in der Variable nur TURE(-1) oder FALSE(0) gespeichert habe. Bei anderen Werten kann es aber zu Fehlern kommen, wenn man mehrere Bedingungen verknüpfen will:
Code: | CLS
a = 4
b = 8
IF a AND b THEN PRINT "1"
IF a <> 0 AND b <> 0 THEN PRINT "2" |
Obwohl auf den ersten Blick die beiden IF-Bedingungen das gleiche machen, wird die Bedingung der ersten IF-Abfrage nicht erfüllt und die Ausgabe daher nicht gemacht.
Solche Sachen führen dann zu Fehlern, die nur hin und wieder mal auftauchen, wenn mal zufälligerweise solche unglücklichen Werte in den Variablen stehen. |
|
Nach oben |
|
 |
ChemicalWarfare

Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 17.01.2005, 17:10 Titel: |
|
|
klar, denn 4 AND 8 = 0 (0100 AND 1000 = 0000) |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 22.01.2005, 08:40 Titel: |
|
|
aber es gilt wieder:
IF a OR b THEN PRINT "1"
IF a <> 0 OR b <> 0 THEN PRINT "2"
Was viele nicht wissen:
AND OR etc. liefern gar nicht 0 & -1 zurück, sondern das Resultat der Bit-Weisen "AND" beziehungsweise "OR" Verknüpfung
Also wie ChemicalWarfare es angedeutet hat. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 22.01.2005, 10:50 Titel: |
|
|
In C/C++ ist es besser als in QB gelöst: Will man bitweises AND und OR, so verwendet man "&" und "|". Soll es dagegen Boolean sein, so schreibt man "&&" und "||".
Einen gewichtigen Unterschied gegenüber QB hat C/C++ doch noch: Ist bei && der erste Ausdruck bereits FALSE, so wird der zweite gar nicht mehr ausgeführt. Umgekehrt bei || wird der zweite Ausdruck nicht mehr ausgeführt, wenn der erste bereits TRUE ist. Hat durchaus Konsequenzen: In C/C++ ist so etwas erlaubt und funktioniert problemlos:
Code: | int a[10], i;
i=0;
while(i < 10 && a[i] != 22) {
i++;
} |
In QBasic dagegen geht dies nicht:
Code: | DIM a%(9)
i% = 0
WHILE i% < 10 AND a%(i%) <> 22
i% = i% + 1
WEND |
Begründung: QB führt im Fall von i%=10 (=die Bedingung i%<10 wäre bereits nicht mehr erfüllt => Rest von diesem AND-Ausdruck irrelevant!) stur immer noch den a%(i%)<>22-Vergleich aus, obwohl man es nicht mehr müsste, was zwangsweise mit einem "Index ausserhalb des zulässigen Bereichs" endet. In QB musste ich deswegen nicht selten schon aus einem
Code: | IF bedingung1% AND bedingung2% THEN
' ..
END IF |
ein
Code: | IF bedingung1% THEN
IF bedingung2% THEN
' ..
END IF
END IF |
machen, um ein C/C++-mässiges Auswerteverhalten zu bekommen. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
|