Unterschied zwischen ReplaceString und RemoveString

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
JMaker
Beiträge: 102
Registriert: 19.01.2015 10:18

Unterschied zwischen ReplaceString und RemoveString

Beitrag 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?
Ich benutze Pure Basic 5.30 auf Microsoft Windows 7.
Gruß
JM
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Unterschied zwischen ReplaceString und RemoveString

Beitrag von edel »

JMaker hat geschrieben:Vielleicht ein Performance Unterschied?
RemoveString hat natuerlich weniger zu tun, aber der Unterschied sollte dabei nicht sehr auffallen.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Unterschied zwischen ReplaceString und RemoveString

Beitrag 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
a²+b²=mc²
matbal
Beiträge: 261
Registriert: 30.03.2011 20:53

Re: Unterschied zwischen ReplaceString und RemoveString

Beitrag 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()
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Unterschied zwischen ReplaceString und RemoveString

Beitrag von edel »

ReplaceString ist aber auch nur dann schneller wenn der String nicht gefunden wird.
matbal
Beiträge: 261
Registriert: 30.03.2011 20:53

Re: Unterschied zwischen ReplaceString und RemoveString

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