Ich hab nämlich den Vergleich zweier Strings (If String1 = String2) optimiert und brauche ein bischen mehr als halb so viel Zeit und ein bischen weniger als meine CompareMemory-Procedure.
Wer sich selbst davon überzeugen will: www.deeem2031.de/SYS_StringEqual
Dazu muss ich aber sagen, das es zwar eine ganz normale PB-Library ist. Es aber kein sauberer Code ist, ehrlich gesagt hab ich mich sogar sehr gewundert, dass es funktioniert hat ^^ Es müsste nämlich durch das hinzufügen der Library ein Label doppelt sein, was aber anscheinend ignoriert wird.
Um den neuen Verlgeich dann nutzen zu können, muss man irgendwo (es ist völlig egal wo, selbst nach einem "End" müsste es funktionieren) "Init_SYS_StringEqual()" aufrufen. Diese Procedure macht allerdings absolut nichts, desswegen ist es auch egal wo man sie einfügt. Ohne die Procedure wird allerdings weiterhin der alte Vergleich aufgerufen.
Für alle die, die das jetzt nicht kapiert haben
Alt:
Code: Alles auswählen
;Init_SYS_StringEqual()
SetThreadPriority_(GetCurrentThread_(),#THREAD_PRIORITY_ABOVE_NORMAL)
#r = 20000000
test.s = "Hallo Welt!"
time1 = ElapsedMilliseconds()
For i = 0 To #r
If test = "Hallo Welt!"
EndIf
Next
time1 = ElapsedMilliseconds() - time1
time2 = ElapsedMilliseconds()
For i = 0 To #r
If CompareMemory(test,@"Hallo Welt!",StrLen(test))
EndIf
Next
time2 = ElapsedMilliseconds() - time2
MessageRequester("",Str(time1)+#CRLF$+Str(time2))Code: Alles auswählen
Init_SYS_StringEqual()
SetThreadPriority_(GetCurrentThread_(),#THREAD_PRIORITY_ABOVE_NORMAL)
#r = 20000000
test.s = "Hallo Welt!"
time1 = ElapsedMilliseconds()
For i = 0 To #r
If test = "Hallo Welt!"
EndIf
Next
time1 = ElapsedMilliseconds() - time1
time2 = ElapsedMilliseconds()
For i = 0 To #r
If CompareMemory(test,@"Hallo Welt!",StrLen(test))
EndIf
Next
time2 = ElapsedMilliseconds() - time2
MessageRequester("",Str(time1)+#CRLF$+Str(time2))PS.: Hab vorgestern, neben der Memory und Math Lib, auch angefangen die StringExtension Lib zu optimieren. Das dauert aber noch ein bischen.


