Delphi-PRAXiS
Seite 2 von 2     12

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi String kopieren, was ist schneller? (https://www.delphipraxis.net/183419-string-kopieren-ist-schneller.html)

Sir Rufo 8. Jan 2015 19:41

AW: String kopieren, was ist schneller?
 
Zitat:

Zitat von Mavarik (Beitrag 1285954)
hmm warum "saust" du nicht einfach mit 2 PChars da durch.

Wenn Du an der richtigen Stelle bist von PCharDest := PCharSource bis du aus dem Bereich bist..

sonst immer nur nette inc's des PChars... nix ist schneller...

Oder habe ich da was falsch verstenden?

Das "Sausen" macht er ja schon mit diesen FastCode-Gedöns-Routinen :)

Er saust da nur über das Ziel hinaus. Erst in alle Ecken pinkeln, und dann mit der Nase am Boden die Stellen suchen, die nach Laterne unten riechen, die Stelle wischen und dann endlich dort etwas machen. Hört sich nicht nur umständlich an, ist es auch.

Dejan Vu 8. Jan 2015 20:03

AW: String kopieren, was ist schneller?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1285958)
Hört sich nicht nur umständlich an, ist es auch.

Also :kotz: 'umständlich' ist jetzt nicht ... huälp... das richtige Wort. Bezogen auf deinen bildlichen Vergleich.

OlafSt 8. Jan 2015 22:04

AW: String kopieren, was ist schneller?
 
Der Ansatz ist wirklich durch die Brust ins Auge und dann ins Knie... Du hast ja mehrere Suchvorgänge, wo doch ein einzelner genügt.

- Du hast eine Routine, die den Startmarker setzt
- Du hast eine Routine, die den Endmarker setzt

Statt den String zu modifizieren, läßt du dir die Position im String jeweils zurückgeben. Das Stück kopierst du heraus und verarbeitest es weiter.
Delphi-Quellcode:
...
sp:=GetStartPosition(RiesenString);
ep:=GetEndPosition(RiesenString, sp); //Sucht ab sp nach dem Ende
VielKleinererString:=copy(RiesenString, sp, ep);
//Weiterverarbeiten des VielKleinererString
BTW... Wenn du den MemoryStream in einen StringStream uschaufelst, wird dann nicht noch eine Kopie erzeugt ? ;)

SearchBot 8. Jan 2015 22:41

AW: String kopieren, was ist schneller?
 
Zitat:

OlafSt: BTW... Wenn du den MemoryStream in einen StringStream uschaufelst, wird dann nicht noch eine Kopie erzeugt ?
Ja, aber das macht er nur 1x, danach gebe ich den MemoryStream und StringStream wieder frei. Hab dazu keine andere Lösung gefunden, an den String zu kommen...

Also gut, ok, :oops:

die Positionierung kann ich also noch besser machen - aber wie ist das jetzt mit dem rauskopieren meiner Werte, nachdem ich also die Positionen gefunden habe?

Gibt's da was schnelleres als copy und wie müsste das dann aussehen?

Sir Rufo 8. Jan 2015 22:45

AW: String kopieren, was ist schneller?
 
Ähm, du reist von Bremen über Paris, Rom, Madrid nach Hamburg, aber der Weg zur Kneipe um die Ecke ist dir zu weit?

Stell das um, nimm das Copy und schau dir die Zeiten an. Den größten Teil verbrätst du beim Suchen, Suchen

QuickAndDirty 9. Jan 2015 10:05

AW: String kopieren, was ist schneller?
 
Ist move für Buffer nicht eine Alternative zu copy?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr.
Seite 2 von 2     12

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf