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? :freak:

Verfasst: 22.04.2007 19:07
von AND51
Formulier das mal netter! Oder bist du gestört :freak: ?
Hört sich nicht nett an, wenn einem das gesagt wird, was? :wink:

Verfasst: 22.04.2007 19:07
von Andreas_S
Gut dann sinds hald 1797 ohne Debugger :freak: !
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 :freak: !
Ich glaub du weisst nicht ganz was du tust. Bei mir sind die Ergebnisse 15 Ms und 29 MS. :freak:

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! Bild

PS: Ich habe einen Pentium D 3.0 MHz.