Seite 1 von 3
Performance von SELECT und IF
Verfasst: 22.04.2007 17:54
von batzilla
Hallo zusammen,
ich bin bei der Optimierung eines Programmes und stelle mir die Frage was wohl grundsätzlich schneller ist:
Eine Select-Abfrage oder eine If-Abfrage. Persönlich verwende ich gerne wegen der Übersicht Select.
Gibts da Erfahrungen oder gar echte Fakten?
Gruß
Batzilla
Verfasst: 22.04.2007 18:47
von THEEX
Na das kannste an sich recht leicht selbst rausfinden, indem Du's einfach selbst aus probierst...
If sollte schneller sein.
Verfasst: 22.04.2007 19:02
von Andreas_S
Ich stimme CSprengel zu, hier der Beweis:
Code: Alles auswählen
StartTime=ElapsedMilliseconds()
For x=0 To 10000000
If x=0
EndIf
Next
JetTime=ElapsedMilliseconds()
Debug JetTime-StartTime
Code: Alles auswählen
StartTime=ElapsedMilliseconds()
For x=0 To 10000000
Select x
Case 0
EndSelect
Next
JetTime=ElapsedMilliseconds()
Debug JetTime-StartTime
Hatte auch gedacht das IF-Schleife schneller ist.
If ist auch besser weil man < u. > verwenden kann. Not, And,... gehen beim Select auch nicht!
PS. bei mir warens bei der IF 1375 ms und beim select 1875.
\\Edit:
Wenns dir so besser gefällt!?
Verfasst: 22.04.2007 19:05
von Fluid Byte
Bist du gestört das mit Debugger laufen zu lassen?

Verfasst: 22.04.2007 19:07
von AND51
Formulier das mal netter! Oder bist du gestört

?
Hört sich nicht nett an, wenn einem das gesagt wird, was?

Verfasst: 22.04.2007 19:07
von Andreas_S
Gut dann sinds hald 1797 ohne Debugger

!
Danke fürs gestört!!!
Verfasst: 22.04.2007 19:10
von AND51
Man sollte derartige SPeedtests imemr ohne Debugger durchführen, weil der Debugger das Programm um bis zu 600% verlangsamen kann.
man erhält also in jedem Fall gefälschte (nicht brauchbare) Ergebnisse.
Besser ist es, die Elapsed-Zeiten in Variablen zu speichern und nachher in einem MessageRequester anzeigen zu lassen.

Verfasst: 22.04.2007 19:10
von Fluid Byte
PBprogger hat geschrieben:Gut dann sinds hald 1797 ohne Debugger

!
Ich glaub du weisst nicht ganz was du tust. Bei mir sind die Ergebnisse 15 Ms und 29 MS.

Verfasst: 22.04.2007 19:15
von Andreas_S
Wie viel verbraucht bitte der Debugger???!
Habs jetzt so gemacht:
Code: Alles auswählen
StartTime=ElapsedMilliseconds()
For x=0 To 10000000
If x=0
EndIf
Next
JetTime=ElapsedMilliseconds()
MessageRequester("Test",Str(JetTime-StartTime))
StartTime=ElapsedMilliseconds()
For x=0 To 10000000
Select x
Case 0
EndSelect
Next
JetTime=ElapsedMilliseconds()
MessageRequester("Test",Str(JetTime-StartTime))
Ohne Debugger!!!
Jetzt 109 und 141 (mein Laptop ist anscheinend langsamer)
Danke And
Verfasst: 22.04.2007 19:17
von Fluid Byte
Geht doch!
PS: Ich habe einen Pentium D 3.0 MHz.