Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Procedure ReverseString(*Text.Character)
Protected *ende.Character=*Text+MemoryStringLength(*Text)<<#PB_Compiler_Unicode-SizeOf(Character)
While *Text < *Ende
Swap *Text\c, *ende\c
*Text+SizeOf(Character)
*ende-SizeOf(Character)
Wend
EndProcedure
Procedure.s TurnWords(psString.s)
String.s = psString
Leer.s = ""
Lenght.i = Len(String)
For i=0 To Lenght-1
Leer+Mid(String,Lenght-i,1)
Next
ProcedureReturn Leer
EndProcedure
#Check = 500000
OpenConsole()
Print ("Pointer... ")
test$ = "Purebasic ist eine schöne Programmiersprache"
Delay(100)
time = ElapsedMilliseconds()
For x = 0 To #Check
ReverseString(@test$)
Next
pointer = ElapsedMilliseconds()-time
PrintN(StrF(pointer/1000,2)+"s")
Print ("String... ")
test$ = "Purebasic ist eine schöne Programmiersprache"
Delay(100)
time = ElapsedMilliseconds()
For x = 0 To #Check
test$ = TurnWords(test$)
Next
string = ElapsedMilliseconds()-time
PrintN(StrF(string/1000,2)+"s")
PrintN("Pointer ist "+StrF(string/pointer,1)+" mal schneller als String")
Input()
Pointer... 0.13s
String... 7.52s
Pointer ist 57.4 mal schneller als String
KeyKon hat geschrieben:Wiso? Das ganze steht doch stellvertretend dafür das man wenn man massiv Stringoperationen durchführen muss mit den Pointern besser gestellt ist...
Nein, unterschiedlicher koennen die Funktionen ja gar nicht sein, auch wenn
das Ergebnis gleich ist. Beide sind brauchbar, wobei ich die von and51, so
nicht nutzen wuerde, da sie viel zu unsicher ist.