I found an interesting topic
Code: Select all
EnableExplicit
DisableDebugger
Procedure FindStr(*c.Character, *fc.Character)
Protected *FStart0, *Start0
If Not *fc\c
ProcedureReturn #False
EndIf
; + StartPosition * SizeOf(Character)
*FStart0 = *fc
*Start0 = *c
While *c\c
While *c\c = *fc\c And *c\c
*fc + SizeOf(Character)
*c + SizeOf(Character)
Wend
; If *fc - *FStart0
If *fc <> *FStart0
If *fc\c
*c - *fc + *FStart0
*fc = *FStart0
Else
ProcedureReturn (*c - *Start0 - *fc + *FStart0) / SizeOf(Character) + 1
EndIf
EndIf
*c + SizeOf(Character)
Wend
ProcedureReturn #False
EndProcedure
Define txt$ = "Hi guys"
; EnableDebugger
; Debug FindStr(@txt$, @"s")
; DisableDebugger
; End
Define t, i
t = ElapsedMilliseconds()
For i = 0 To 1000000
FindStr(@txt$, @"s")
Next
EnableDebugger
Debug Str(ElapsedMilliseconds() - t)
DisableDebugger
t = ElapsedMilliseconds()
For i = 0 To 1000000
FindString(txt$, "s")
Next
EnableDebugger
Debug Str(ElapsedMilliseconds() - t)