Select ist auch dann nicht überflüssig, wenn man das Ergebnis
einer zeitintensiven Funktion abfragt.
(test1 ist hier der 'worst case'. Der Vorteil zwischen test2 (if) und
test3 (select) ist, dass man keine Extravariable benötigt)
Code: Alles auswählen
EnableExplicit
Define Z1, Z2
Define Len
Define Test1, Test2, Test3, Test4
Procedure.s BuildString()
Protected ReturnValue.s
Protected Counter
For Counter = 0 To 100000
ReturnValue + " "
Next
ProcedureReturn ReturnValue
EndProcedure
; test 1
Z1 = ElapsedMilliseconds()
If Len(BuildString())=0
ElseIf Len(BuildString())=1
ElseIf Len(BuildString())=2
Else
EndIf
Z2 = ElapsedMilliseconds()
Test1 = Z2 - Z1
; test 2
Z1 = ElapsedMilliseconds()
Len = Len(BuildString())
If Len=0
ElseIf Len=1
ElseIf Len=2
Else
EndIf
Z2 = ElapsedMilliseconds()
Test2 = Z2 - Z1
; test 3
Z1 = ElapsedMilliseconds()
Select Len(BuildString())
Case 0
Case 1
Case 2
Default
EndSelect
Z2 = ElapsedMilliseconds()
Test3 = Z2 - Z1
; test 4
Z1 = ElapsedMilliseconds()
Len = Len(BuildString())
Select Len
Case 0
Case 1
Case 2
Default
EndSelect
Z2 = ElapsedMilliseconds()
Test4 = Z2 - Z1
MessageRequester("Result", "Test1: " + Str(Test1) + #CRLF$ +
"Test2: " + Str(Test2) + #CRLF$ +
"Test3: " + Str(Test3) + #CRLF$ +
"Test4: " + Str(Test4))
Grüße ... Kiffi