wohl doch eher:
ohne die "/"
wohl doch eher:
ohne die "/"
Du kannst $CMDLINE auch keine Werte zuweisen .
Schau mal das Beispiel:
If $CMDLINE[0] Then
If $CMDLINE[1] = "Update" Then
;Hier kommt rein was du aufrufst
EndIf
EndIf
Wo der Comment ist kommt dein Code rein.
Achso, danke dir
Micha_he
ich habs absichtlich so gemacht weil ich parameter am liebsten mit / mache
ist nur n schönheitsfehler
Raupi
ich würds per switch machen (is iwie sauberer^^)
If $CMDLINE[0] Then
For $i = 1 To $CMDLINE[0]
Switch $CMDLINE[$i]
Case 'Update'
;Hier kommt dein Code rein
Case Else
Exit
EndSwitch
Next
EndIf
Padmak
ich würds per switch machen (is iwie sauberer^^)
Ich denke, das ist nicht der Punkt - wichtiger (wenn auch in dem Bsp. nicht von Belang) ist die Geschwindigkeit. Und da ist das If-Statement eine absolute Performancebremse.
Kann mich noch gut an µit-BigInteger erinnern. Mit jedem entfernten If..Then wurde das Skript deutlich schneller.
Zitatwichtiger (wenn auch in dem Bsp. nicht von Belang) ist die Geschwindigkeit.
ja des hätt ich eig auch sagen können
[OT]
warum ist das eigentlich schneller? weils nicht andauernd werte vergleichen muss?
[/OT]
Padmak
Gibt es eigtl. Situationen wo eine If Klausel besser ist als eine Switch/Select oder ist Switch/Select in jedem Fall schneller als If?
Als konkretes Beispiel hätte ich da eine Tastenkombination, welche nur dann funktionieren soll wenn das Fenster nicht versteckt ist. Mit einer if Klausel kann ich einfach ein OR für jeden Fensterstatus hintenran hängen, bi switch/select müsste ich Case 1, Case 2, Case 3, Case 4, etc. reinschreiben, und in jeder Zeile wieder die gleiche Aktion, bei der If Klausel jedoch nur einmal die Aktion.
Nein
just start this:D:
$bla = 1
$bla2 = 2
$timer = TimerInit()
If $bla = 1 Or $bla2 = 2 Then
EndIf
$timerende = TimerDiff($timer)
$timer2 = TimerInit()
Select
Case $bla = 1 Or $bla2 = 2
EndSelect
$timerende2 = TimerDiff($timer2)
MsgBox(0, "", "Von If benötigte Zeit " & $timerende)
MsgBox(0, "", "Von Select benötigte Zeit " & $timerende2)
If $timerende < $timerende2 Then MsgBox(0, "", "If ist schneller")
If $timerende > $timerende2 Then MsgBox(0, "", "Select ist schneller")
Padmak
Also demnach, wo möglich (sei es nun technisch oder aufgrund meines Wissens) Select/Switch benutzen. Oder jetzt nochmal gefragt: Select oder Switch?
Ich würd switch nehmen
kannst ja mal mein script ausprobieren und testen
was schneller ist nimmst halt dann
Padmak
Jo laut Script wars Select. Na ja, hab meine Skript If Abfragen in Switch Cases umgeschrieben.
@Padmak:
Bei deinem Geschwindigkeitstest kommt ein anderes Ergebnis raus, wenn man die beiden Tests vertauscht
[autoit]$bla = 1
$bla2 = 2
$timer2 = TimerInit()
Select
Case $bla = 1 Or $bla2 = 2
EndSelect
$timerende2 = TimerDiff($timer2)
$timer = TimerInit()
If $bla = 1 Or $bla2 = 2 Then
EndIf
$timerende = TimerDiff($timer)
MsgBox(0, "", "Von If benötigte Zeit " & $timerende)
MsgBox(0, "", "Von Select benötigte Zeit " & $timerende2)
If $timerende < $timerende2 Then MsgBox(0, "", "If ist schneller")
If $timerende > $timerende2 Then MsgBox(0, "", "Select ist schneller")
Da mich das jetzt interessiert hat, hab ih auch einen Test gemacht:
[autoit]Global $Timer,$X,$i,$Max=1000000
[/autoit][autoit][/autoit][autoit]$Timer=TimerInit()
For $i=1 To $Max
If $i=0 Then MsgBox(0,"","")
Next
ConsoleWrite("IF THEN " & TimerDiff($Timer) & @LF)
$Timer=TimerInit()
For $i=1 To $Max
If $i=0 Then
MsgBox(0,"","")
EndIf
Next
ConsoleWrite("IF THEN ENDIF " & TimerDiff($Timer) & @LF)
$Timer=TimerInit()
For $i=1 To $Max
Switch $i
Case 0
MsgBox(0,"","")
EndSwitch
Next
ConsoleWrite("SWITCH " & TimerDiff($Timer) & @LF)
$Timer=TimerInit()
For $i=1 To $Max
Select
Case $i=0
MsgBox(0,"","")
EndSelect
Next
ConsoleWrite("SELECT " & TimerDiff($Timer) & @LF)
Bei mir ist IF (Ohne Endif) am schnellsten, am langsamsten ist SELECT...
Reihenfolge ist bei mir auch:
1. If...Then
2. Switch
3. If...Then...EndIf
4. Select
Wobei 3 und 4 noch weiter hinter Switch zurückfallen, wenn mehrere Vergleiche stattfinden:
Global $Timer, $X, $i, $Max = 1000000
$Timer = TimerInit()
For $i = 2 To $Max
If $i = 0 Then MsgBox(0, "", "")
Next
ConsoleWrite("IF THEN " & TimerDiff($Timer) & @LF)
$Timer = TimerInit()
For $i = 2 To $Max
If $i = 0 Then
MsgBox(0, "", "")
EndIf
Next
ConsoleWrite("IF THEN ENDIF " & TimerDiff($Timer) & @LF)
$Timer = TimerInit()
For $i = 2 To $Max
Switch $i
Case 0
MsgBox(0, "", "")
EndSwitch
Next
ConsoleWrite("SWITCH " & TimerDiff($Timer) & @LF)
$Timer = TimerInit()
For $i = 2 To $Max
Select
Case $i = 0
MsgBox(0, "", "")
EndSelect
Next
ConsoleWrite("SELECT " & TimerDiff($Timer) & @LF)
$Timer = TimerInit()
For $i = 2 To $Max
If $i = 0 Then
MsgBox(0, "", "")
ElseIf $i = 1 Then
MsgBox(0, "", "")
EndIf
Next
ConsoleWrite("IF THEN ENDIF 2 " & TimerDiff($Timer) & @LF)
$Timer = TimerInit()
For $i = 2 To $Max
Switch $i
Case 0
MsgBox(0, "", "")
Case 1
MsgBox(0, "", "")
EndSwitch
Next
ConsoleWrite("SWITCH 2 " & TimerDiff($Timer) & @LF)
$Timer = TimerInit()
For $i = 2 To $Max
Select
Case $i = 0
MsgBox(0, "", "")
Case $i = 1
MsgBox(0, "", "")
EndSelect
Next
ConsoleWrite("SELECT 2 " & TimerDiff($Timer) & @LF)