Performance von SELECT und IF

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
batzilla
Beiträge: 37
Registriert: 17.12.2005 21:44

Performance von SELECT und IF

Beitrag 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
PB 4.02
THEEX
Beiträge: 804
Registriert: 07.09.2004 03:13

Beitrag von THEEX »

Na das kannste an sich recht leicht selbst rausfinden, indem Du's einfach selbst aus probierst...
If sollte schneller sein.
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag 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!?
Zuletzt geändert von Andreas_S am 22.04.2007 19:09, insgesamt 1-mal geändert.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Bist du gestört das mit Debugger laufen zu lassen? :freak:
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Gut dann sinds hald 1797 ohne Debugger :freak: !
Danke fürs gestört!!!
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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. :)
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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:
Windows 10 Pro, 64-Bit / Outtakes | Derek
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag 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
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Geht doch! Bild

PS: Ich habe einen Pentium D 3.0 MHz.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Gesperrt