String splitten

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
hörmi
Beiträge: 106
Registriert: 10.07.2007 15:20
Kontaktdaten:

Re: String splitten

Beitrag von hörmi »

7x7 hat geschrieben:Spitzencode. Jetzt hat es 'Tombi' als Anfänger mit Sicherheit kapiert wie es geht.
au ja schwierigen code schreiben :mrgreen:


aber mal im ernst ich hab mal mk-soft's code hergenommen um ihn ein kleines bisschen zu modifizieren, der is wirklich schnell

Code: Alles auswählen

EnableExplicit

Global text1$

text1$ = "Stringfield ist eine extrem langsame Funktion"
text1$ + " und wenn du weiter mit einer Array arbeiten willst,"
text1$ + " dann könnte dies schneller sein. Das solltest du mal Testen !"

Dim Woerter.s(0)

Procedure.s StringFieldFast(text.s, separator.s, index.l)

  Protected *mem.Character = @text 
  Protected *posi.character = *mem - SizeOf(character)
  Protected anz, pos
  Protected zeichen = Asc(separator)
  
  anz = CountString(text, separator)
  anz + 1

  
  Repeat
  
    If *mem\c = zeichen 
      *posi + SizeOf(character)
      pos + 1
      If pos=index
      ProcedureReturn PeekS(*posi, (*mem - *posi) / SizeOf(character))
      EndIf
      *posi = *mem
    EndIf
    *mem + SizeOf(character)
   
  Until *mem\c = 0

EndProcedure

Define.l c,i
Define.l t1,t2,t3

t1=GetTickCount_()

For c=0 To 10000
  For i = 0 To 20
    StringFieldFast(text1$, " " , i)
  Next
Next
t2=GetTickCount_()
For c=0 To 10000
  For i = 0 To 20
    StringField(text1$,i, " " )
  Next
Next
t3=GetTickCount_()
Debug t3-t2
Debug t2-t1
edit: sorry lag am quote-tag das die leerzeichen nicht angezeigt wurden....
Zuletzt geändert von hörmi am 30.01.2010 21:32, insgesamt 1-mal geändert.
BildBild Bild
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: String splitten

Beitrag von TomS »

@hörmi: Code-Tags und einrücken. /:->
Danke.

@mk-soft: :allright:
Habe den Code nicht auf Speed getestet. Ich glaube es dir einfach mal. Außerdem kommt's bei meinen kleineren Anwendungen eh noch nicht so auf Speed an und man soll ja bekanntlich nicht zu früh optimieren.
Aber als PHP-ler kommt mir eine Version mit Arrax gerade recht :)
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: String splitten

Beitrag von c4s »

hörmi hat geschrieben:ich hab mal mk-soft's code hergenommen um ihn ein kleines bisschen zu modifizieren, der is wirklich schnell

Code: Alles auswählen

[...]
Debug t3-t2
Debug t2-t1
Kleiner wichtiger Hinweis:
Bei Geschwindigkeitstests immer den Debugger aussschalten. Komplett!

Wie dem auch sei. Der Code ist in der Tat schnell - bei mir immerhin um das 6 fache.
"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
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: String splitten

Beitrag von mk-soft »

@hörmi

dein vergleich ist nicht richtig. Die PB-Funktion ist auf jeden fall schneller. Erst beim splitten mit vielen Wörtern auf einen Array kommt der Vorteil zur Geltung. War aber nicht auf Speed ausgelegt

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten