Schreibweise ändern (so geht das <> So Geht Das)...?

Anfängerfragen zum Programmieren mit PureBasic.
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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!
Zuletzt geändert von AND51 am 05.02.2008 00:01, insgesamt 1-mal geändert.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag 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...
Zuletzt geändert von Andreas_S am 05.02.2008 00:29, insgesamt 2-mal geändert.
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag 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.
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Achso, wusste ich nicht... Danke

Andreas
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag 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..
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag 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...
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag 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
Antworten