Seite 2 von 4
Verfasst: 04.02.2008 23:51
von Andreas_S
ist das jetzt ein wettstreit?
du verwendest glaub ich zu viele schleifen...
es ist sicher besser mehr variablen zu machen als schleifen!
ich mach auch speedtest...
Andreas
Verfasst: 04.02.2008 23:54
von Kiffi
@Ghosty1967: Du meinst nicht zufälligerweise
oder? Wenn doch, dann müssen die Jungs noch mal ran, denn hier wird nicht
nur der erste Buchstabe groß, sondern auch alle nachfolgenden Buchstaben
im Wort klein geschrieben.
siehe auch:
http://www.purebasic.fr/english/viewtopic.php?t=10196
Grüße ... Kiffi
Verfasst: 05.02.2008 00:00
von AND51
> Speedtest folgt...
Verdammt!
Bei 1.000.000 durchläufen ist deines (766 ms) schneller als meines (828 ms)...
OK, für heute gebe ich mich (natürlich nur ungern) geschlagen... gn8
@ Kiffi:
Da war ich grad auch schon. Wenn es so gewünscht wird, dann bitte nochmal sagen!
Verfasst: 05.02.2008 00:01
von Andreas_S
@And51
bei kürzeren Strings ist meins schnelle bei längeren deins...
@Kiffi
verdammt
//edit:
Zum speed:
Code: Alles auswählen
Procedure.s Capitalize(text.s)
Protected *pos.Character=@text
While *pos\c
While *pos\c < 'a' Or *pos\c > 'z'
*pos+SizeOf(Character)
Wend
*pos\c-32
While (*pos\c >= 'a' And *pos\c <= 'z') Or (*pos\c >= 'A' And *pos\c <= 'Z')
*pos+SizeOf(Character)
Wend
Wend
ProcedureReturn text
EndProcedure
Procedure.s irgendeinBefehl( str.s )
Protected *ptr.CHARACTER = @str, space = 1
While *ptr\c
If *ptr\c = 32
space = 1
Else
If space = 1
If (*ptr\c >= 97) And (*ptr\c <= 122)
*ptr\c - 32
space = 0
EndIf
EndIf
EndIf
*ptr + SizeOf(CHARACTER)
Wend
ProcedureReturn str
EndProcedure
startTime = ElapsedMilliseconds()
For i = 0 To 10000000
irgendeinBefehl("<Dies 'ist #ein +testtext, ~um 3zu 4zeigen &was (passierte")
Next
endTime = ElapsedMilliseconds()
time1 = endTime - startTime
startTime = ElapsedMilliseconds()
For i = 0 To 10000000
Capitalize("<Dies 'ist #ein +testtext, ~um 3zu 4zeigen &was (passierte")
Next
endTime = ElapsedMilliseconds()
time2 = endTime - startTime
MessageRequester("Andreas_S vs. And51","Andreas_S: " + Str(time1) + Chr(10) + "And51: " + Str(time2))
Ich: 11484ms
Du: 11125ms
Wenns aber nur "<Dies" ist:
Ich: 3500ms
Du: 3609ms
Irgendwie hab ich das gefühl das destomehr sonderzeichen desto länger dauert meine methode...
Verfasst: 05.02.2008 00:25
von HeX0R
Das
kannst du dir sparen.
SizeOf() ist eine Compilerdirektive.
Soll heissen es wird in der Exe direkt mit 1 oder 2 ersetzt.
Verfasst: 05.02.2008 00:27
von Andreas_S
Achso, wusste ich nicht... Danke
Andreas
Verfasst: 05.02.2008 01:07
von c4s
Andreas_S hat geschrieben:Ich: 11484ms
Du: 11125ms
Wenns aber nur "<Dies" ist:
Ich: 3500ms
Du: 3609ms
zum Thema Geschwindigkeitstest (jeweils 10mal weniger Schleifen) :
Andreas_S: 16968ms
And51: 7203ms
Wenns aber nur "<Dies" ist:
Andreas_S: 2390ms
And51: 1454ms
da mir Geschwindigkeit wichtig ist, wollte ich meine Erkenntnis, dass And's
bei beiden schneller ist, nicht vorenthalten
edit:
wobei das Werte mit Debugger sind. Ohne ist Andreas' bei beiden schneller oO
Ich glaube ich enthalte mich lieber..
Verfasst: 05.02.2008 01:13
von Andreas_S
c4s hat geschrieben:edit:
wobei das Werte mit Debugger sind. Ohne ist Andreas' bei beiden schneller oO
Ich glaube ich enthalte mich lieber..
Mir ist geschwindigkeit auch wichtig...
Verfasst: 05.02.2008 15:11
von AND51
Geschwindigkeittests sollten immer
ohne Debugger durchgeführt werden!
Ein eingeschalteter Debugger kann das Programm um bis zu 600% verlangsamen.
Auch bei meinen Tests war Andreas_S schneller, wenn auch nur geringfügig.
Jetzt gerade habe ich keine Zeit, aber ich gebe nicht auf... Irgendwie muss es doch gehen? Hm...
> Mir ist geschwindigkeit auch wichtig
Ich seh schon, wir verstehen uns^^ Gefällt mir, deine Einstellung

Verfasst: 05.02.2008 15:51
von Andreas_S
AND51 hat geschrieben:Jetzt gerade habe ich keine Zeit, aber ich gebe nicht auf... Irgendwie muss es doch gehen? Hm...

Ja, irgendwas kann man sicher noch um eine Ecke schneller machen aber irgendwann ist schluss

, dann ist es optimiert...
AND51 hat geschrieben:> Mir ist geschwindigkeit auch wichtig
Ich seh schon, wir verstehen uns^^ Gefällt mir, deine Einstellung
Genau
Andreas