Seite 2 von 4

Verfasst: 04.02.2008 23:51
von Andreas_S
ist das jetzt ein wettstreit? :mrgreen:

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

Code: Alles auswählen

StrConv([String], VbStrConv.vbProperCase)
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 :mrgreen:

//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

Code: Alles auswählen

chrSpace = SizeOf(CHARACTER)
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 :allright:

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 :mrgreen: , dann ist es optimiert...
AND51 hat geschrieben:> Mir ist geschwindigkeit auch wichtig
Ich seh schon, wir verstehen uns^^ Gefällt mir, deine Einstellung :allright:
Genau :allright:


Andreas