Seite 1 von 1

Unterschied zwischen ReplaceString und RemoveString

Verfasst: 08.06.2015 14:52
von JMaker
Was ist der Unterschied zwischen ReplaceString und RemoveString wenn man String1 aus String2 löschen möchte?

Code: Alles auswählen

Debug ReplaceString("Programmierzeile", "ier", "", #PB_String_NoCase)

Code: Alles auswählen

Debug RemoveString("Programmierzeile", "ier", #PB_String_NoCase)
Worin besteht nun der Unterschied außer das man bei ReplaceString auch Ersetzzeichen einfügen kann?
Vielleicht ein Performance Unterschied?

Re: Unterschied zwischen ReplaceString und RemoveString

Verfasst: 08.06.2015 16:22
von edel
JMaker hat geschrieben:Vielleicht ein Performance Unterschied?
RemoveString hat natuerlich weniger zu tun, aber der Unterschied sollte dabei nicht sehr auffallen.

Re: Unterschied zwischen ReplaceString und RemoveString

Verfasst: 08.06.2015 17:10
von Kiffi
joh, ist eher marginal (bei mir knapp 1 Sekunde bei 10 Mio. Durchläufen):

Code: Alles auswählen

CompilerIf #PB_Compiler_Debugger = 1
	
	MessageRequester("!", "Debugger ausschalten!")
	End
	
CompilerEndIf

EnableExplicit

#Anz = 10000000
Define Z1, Z2, Z3, Z4
Define Counter
Define Result.s

Z1 = ElapsedMilliseconds()
For Counter = 0 To #Anz
	Result = ReplaceString("Programmierzeile", "ier", "", #PB_String_NoCase)
Next
Z2 = ElapsedMilliseconds()

; -----

Z3 = ElapsedMilliseconds()
For Counter = 0 To #Anz
	Result = RemoveString("Programmierzeile", "ier", #PB_String_NoCase)
Next
Z4 = ElapsedMilliseconds()

MessageRequester("!", "ReplaceString(): " + Str(Z2-Z1) + " / RemoveString(): " + Str(Z4-Z3))
Grüße ... Peter

Re: Unterschied zwischen ReplaceString und RemoveString

Verfasst: 08.06.2015 19:07
von matbal
Auf alle Fälle arbeiten beide Funktionen unterschiedlich. Die Geschwindigkeit hängt stark von den Strings ab, und RemoveString ist bei mir nicht immer schneller...

Code: Alles auswählen

OpenConsole()
text$ = "abcabcabcabcabcabcabcabcabcabcdabcdabcdabcabcbcdeabcabcabcabcabcabcabcabc" + 
        "abcabcdabcdabcdabcabcbcdeabcabcabcabcabcabcabcabcabcabcdabcdabcdabcabcbcde"
Dim raus$(4) 
raus$(1) = "abcd"
raus$(2) = "hund"
raus$(3) = "a"
raus$(4) = "abc"

#max = 1000000



For n = 1 To 4
   PrintN("")
   PrintN(" ---------- Entferne " + #DQUOTE$ + raus$(n) + #DQUOTE$ + " ---------- ")
   PrintN("")
   
   t = ElapsedMilliseconds()
   For i = 1 To #max
      a$ =  ReplaceString(text$, raus$(n), "")
   Next i
   Print("ReplaceString: " + Str(ElapsedMilliseconds() - t))
   
   t = ElapsedMilliseconds()
   For i = 1 To #max
      a$ = RemoveString(text$, raus$(n))
   Next i
   PrintN("         RemoveString: " + Str(ElapsedMilliseconds() - t))
   
Next 

Input()

Re: Unterschied zwischen ReplaceString und RemoveString

Verfasst: 08.06.2015 20:15
von edel
ReplaceString ist aber auch nur dann schneller wenn der String nicht gefunden wird.

Re: Unterschied zwischen ReplaceString und RemoveString

Verfasst: 08.06.2015 20:30
von matbal
Ja, hängt wohl von der Anzahl der Fundstellen ab. Wenn ich "de" rauslösche, ist RemoveString auch langsamer. "de" ist nur 3 mal vorhanden.

Aber im Prinzip ist das sowieso egal, solange es schnell genug ist...