frage zu if und and

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

feuerball11

Betreff: frage zu if und and

BeitragFr, Apr 10, 2009 22:38
Antworten mit Zitat
Benutzer-Profile anzeigen
macht es einen unterschied ob ich schreibe:
Code: [AUSKLAPPEN]

for bl.bla = each bla
if bl\bla = 1 and bl\blo = 1 then
blabla
endif


oder:

Code: [AUSKLAPPEN]

for bl.bla = each bla
if bl\bla = 1 then
if bl\blo = 1 then
blabla
endif
endif
next



vorallem meine ich in thema geschwindigkeit...
theoretisch müsste es doch schneller gehen, wenn man nacheinander ausgrentzt, als gleich auf alle werte zu prüfen oder??

TimBo

BeitragFr, Apr 10, 2009 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn man sich das so überlegt, AND braucht auch seine Zeit , eine Operation für den Prozessor.

Achja überlege mal , wieviele Ands du schreiben müsstest um ein tausendstel fps abzuzocken. ^^

Es müsste sowas von wayne sein .. Very Happy

Viele Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
 

n-Halbleiter

BeitragFr, Apr 10, 2009 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Von der Geschwindigkeit her weiß ich nicht, ob es einen Unterschied macht, aber von der Logik her (schlagt mich wenn ich falsch liege^^) dürfte die erste Lösung schneller sein. Ansonsten kommt es auf dich an, wie du es schöner findest. Verschachtelungen werden nämlich bei der ersten Möglichkeit recht schnell unübersichtlich, finde ich.

Verschachtelung beim ersten:
Code: [AUSKLAPPEN]
If bla=1 And (bla2=1 Or bla3=1) Then
 ;sonstwas
ElseIf bla=1 and (bla2=2 Or bla3=2) Then
;das andere
EndIf


Zweite Möglichkeit:
Code: [AUSKLAPPEN]
If bla=1 Then
 If bla2=1 Or bla3=1 Then
  ;sonstwas
 ElseIf bla2=2 Or bla3=2
  ;das andere
 EndIf
EndIf


(Tut mir Leid, dass der Code nicht eingerückt ist, ich habe ihn grad hier reingeschrieben, un da will der halt kein Tab Wink )
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)
 

feuerball11

BeitragFr, Apr 10, 2009 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
also macht es nicht viel von der geschwidigkeit aus oder??

SpionAtom

BeitragFr, Apr 10, 2009 22:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn bla und blo boolsche binäre Variablen sind, also nur die Werte 0 oder 1 annehmen können, kannste das = 1 auch sparen.
Code: [AUSKLAPPEN]
if bl\bla and bl\blo then


in manchen Fällen würde auch sowas gehen, ist aber leicht spaghettihaft:
Code: [AUSKLAPPEN]
if bl\bla + bl\blo = 2 then


Und warum fragen, was schneller ist, wenn man es mit 5 Zeilen Code selber austesten kann Question Exclamation
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

feuerball11

BeitragFr, Apr 10, 2009 23:00
Antworten mit Zitat
Benutzer-Profile anzeigen
wie kann ich das selber testen??

TimBo

BeitragFr, Apr 10, 2009 23:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Sooo

meine Damen und Herren, hier kommt die so sehr umstrittene Auflösung des heutigen Rätsels....

darf ich vorstellen ? Testo Matus.

Code: [AUSKLAPPEN]
one=MilliSecs()
For i#=0 To 10000000
   If x=1 And y=2 Then bla=2
Next
two=MilliSecs()
Print two-one
Print one
Print two

Print "nun kommt der zweite test"

one=MilliSecs()
For i#=0 To 10000000
   If x=1
      If y=2
         bla=2
      EndIf
   EndIf
Next
two=MilliSecs()
Print two-one
Print one
Print two
WaitKey()


wie man sieht ist die erste Variante meistens langsamer.

Viele Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
 

feuerball11

BeitragFr, Apr 10, 2009 23:05
Antworten mit Zitat
Benutzer-Profile anzeigen
^^
ok. geschnallt

TimBo

BeitragFr, Apr 10, 2009 23:43
Antworten mit Zitat
Benutzer-Profile anzeigen
wieder was gelernt Wink
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
 

feuerball11

BeitragFr, Apr 10, 2009 23:44
Antworten mit Zitat
Benutzer-Profile anzeigen
jo

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Apr 11, 2009 0:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt mal was zum nachdenken

bevor ihr den Code testet schaut es euch an...
der Logik nach ist die erste Bedingung "a=1" false und sollte die Function Test() nicht mehr ausführen da es keinen Sinn macht!
Code: [AUSKLAPPEN]
a=0
If a=1 And Test() = 0 Then
   bla=0
End If
WaitKey
Function Test()
   Print "Wieso ist das so...."
End Function


Hier nochmal das Gegenstück ohne "And"
Code: [AUSKLAPPEN]
a=0
If a=1
   If  Test() = 0 Then
      bla=0
   End If
End If
WaitKey
Function Test()
   Print "Wieso ist das so...."
End Function
[BB2D | BB3D | BB+]
 

feuerball11

BeitragSa, Apr 11, 2009 11:57
Antworten mit Zitat
Benutzer-Profile anzeigen
soweit ich die and verknüpfung verstanden habe, prüft er alle funktionen bei and.

TimBo

BeitragSa, Apr 11, 2009 11:58
Antworten mit Zitat
Benutzer-Profile anzeigen
in der Tat und bei der Verschachtelten Variente Prüft er schrittweise Wink
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group