Short question, why is the iteration RegularSortBrakes3 slower than RegularSortBrakes2?
Code: Select all
#Tokbit='.'
Procedure.s RegularSortBrakes0(*s.Character)
Protected symbol='<'
While *s\c
If *s\c=#Tokbit
*s\c=symbol
symbol!2
EndIf
*s+SizeOf(Character)
Wend
EndProcedure
Procedure.s RegularSortBrakes1(*ptrChar.Character)
EnableASM
MOV al,62 ;>
MOV ebp,dword [p.p_ptrChar]
DEC ebp
CompilerIf #PB_Compiler_Unicode
DEC ebp
CompilerEndIf
!jump1:
CompilerIf #PB_Compiler_Unicode
INC ebp
CompilerEndIf
INC ebp
MOV bl,byte [ebp]
CMP bl,0
JZ efin1
CMP bl,#Tokbit
JNE jump1
XOr al,2
MOV byte [ebp],al
JMP jump1
!efin1:
DisableASM
EndProcedure
Procedure.s RegularSortBrakes2(*ptrChar.Character)
EnableASM
MOV al,62 ;>
MOV ebp,dword [p.p_ptrChar]
JMP jumpStart
!jumpLoop:
CompilerIf #PB_Compiler_Unicode
INC ebp
CompilerEndIf
INC ebp
!jumpStart:
MOV bl,byte [ebp]
CMP bl,0
JZ jumpExit
CMP bl,#Tokbit
JNE jumpLoop
XOr al,2
MOV byte [ebp],al
JMP jumpLoop
!jumpExit:
DisableASM
EndProcedure
Procedure.s RegularSortBrakes3(*ptrChar.Character)
EnableASM
MOV al,62 ;>
MOV ebp,dword [p.p_ptrChar]
JMP jumpStart
!jumpLoop:
CompilerIf #PB_Compiler_Unicode
INC ebp
CompilerEndIf
INC ebp
!jumpStart:
MOV bl,byte [ebp]
CMP bl,0
JZ jumpExit
CMP bl,#Tokbit
JE jumpChange
CompilerIf #PB_Compiler_Unicode
INC ebp
CompilerEndIf
INC ebp
MOV bl,byte [ebp]
CMP bl,0
JZ jumpExit
CMP bl,#Tokbit
JE jumpChange
CompilerIf #PB_Compiler_Unicode
INC ebp
CompilerEndIf
INC ebp
MOV bl,byte [ebp]
CMP bl,0
JZ jumpExit
CMP bl,#Tokbit
JNE jumpLoop
!jumpChange:
XOr al,2
MOV byte [ebp],al
JMP jumpLoop
!jumpExit:
DisableASM
EndProcedure
#Q=#DOUBLEQUOTE$
#N=100000
t.s="<"+#Q+"name"+#Q+"iiiiiii|iiiiiiii|iiiiiiiii|iiiiiiiiiiiiiiiiiiiiiiiiiiii|iiiiiiii|iiiiiiiiii|iiiiiiiiiiiiiiiiiiiiiiiiiiii|iiiiiiiiiiiiiiii|iiiiiiiiiiiiiiiii|iiiiiiiii|iii|iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii|iiiiiiiiiiiiiiiiii|iiiiiiiiii|iiiiiiii|iiiiiiiiiiiiiiiiiiiiiii|iiiiiiiiiiiiiii|iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii|iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii|iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii|iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii|iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii|iiiiiiiiii|iiiiiiiii|iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii|iiiiiiiiiiiiiiiiiiiiiiiiiiiiiii|iiiiiiiiiiiii|iiiiiiiiiii|iiiiiiiiii>< S| - S><\d\d>e<\d\d>< | - ><*?><<<iiii>< *><\d*>< >>|< >|<>><<iiiiiiiiii|iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii>><*>?:=?:=?:=?:="
t+".hallo..a..b..c..d..e..f..g..h..i..j..k..l..m..n..o..p..q..r..s..t..u..v..w..x..y..z."
z+ElapsedMilliseconds()
For i=1 To #N>>10
s.s=t
Next i
z-ElapsedMilliseconds()
z<<10
For i=1 To #N
s.s=t
For j=0 To 9
RegularSortBrakes3(@s)
Next j
Next i
z+ElapsedMilliseconds()
MessageRequester(Str(z)+"ms",s)