Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FastStrings eingestellt? (https://www.delphipraxis.net/132318-faststrings-eingestellt.html)

PeterPanino 10. Apr 2009 00:00


FastStrings eingestellt?
 
Hallo, weiß jemand, ob es eine neuere Version von FastStrings gibt?. Die letzte Version scheint nämlich die Version 3.2 aus dem Jahr 2003 zu sein. Außerdem ist unter der angebenen URL http://www.droopyeyes.com/default.as...howProductID=4 nur mehr eine Optiker-Website zu erreichen.

Ich habe nämlich eine Routine, in der StringReplace häufig aufgerufen wird, und muss deshalb die Ausführzeit optimieren. Kann hier jemand dazu einen Rat geben?

himitsu 10. Apr 2009 00:12

Re: FastStrings eingestellt?
 
viele der Funktionen des Projektes sind auch schon direkt in Delphi integriert.

in "neueren" (ich weiß nicht genau seitwann) Delphiversionen sind viele "langsame" Funktionen direkt durch welche von da ersetzt wurden.

eventuell ist das auch ein Grund, daß man es als Einzelprojekt aufgegeben hat? :gruebel:

jaenicke 10. Apr 2009 00:14

Re: FastStrings eingestellt?
 
Vielleicht könntest du das auch anders umsetzen als mit StringReplace, denn das ist zwar einfach, aber nicht besonders schnell. Du könntest zeichenweise durchgehen und schauen ob es Übereinstimmungen gibt, wenn du nach mehreren Strings suchst.

Und vielleicht gibt es auch noch eine bessere noch speziellere Lösung, je nachdem was du genau vor hast.

API 10. Apr 2009 00:14

Re: FastStrings eingestellt?
 
Peter Morris, Author des FastStrings Projekts, hat dieses eingestellt.
Hintergruende sind in diesem Blog zu lesen.

PeterPanino 10. Apr 2009 00:57

Re: FastStrings eingestellt?
 
Zitat:

Zitat von jaenicke
Du könntest zeichenweise durchgehen und schauen ob es Übereinstimmungen gibt, wenn du nach mehreren Strings suchst

Gibt es Studien darüber, ob dieser Algorithmus effizienter ist?

jaenicke 10. Apr 2009 01:04

Re: FastStrings eingestellt?
 
Naja, eigentlich sollte es vom Algorithmus her schneller sein, aber es kommt drauf an, ob man die Umsetzung schneller hinbekommt als der bestehende Code für Such- und Ersetzoperationen, denn das erfordert ja auch Speicherzugriffe. :gruebel:

PeterPanino 10. Apr 2009 01:26

Re: FastStrings eingestellt?
 
Naja, was ich machen möchte, ist eine StringListe nach HTML zu übersetzen, d.h. z.B. die deutschen Umlaute sollen in die entsprechenden HTML-Äquivalente übersetzt werden. Ober gibt es dafür schon fertige Routinen?

jaenicke 10. Apr 2009 01:59

Re: FastStrings eingestellt?
 
Das nicht, aber da du jeweils einen Buchstaben durch mehrere andere ersetzen willst, ist das zeichenweise durchgehen mit absoluter Sicherheit sehr sehr viel schneller. Die Ersetzungen kannst du ja in einem Array speichern und dann bei dem entsprechenden Zeichen nur darauf zugreifen.

Sinnvoll dürfte es sein einen neuen größeren String zu erstellen und die Zeichen zeichenweise hineinzusetzen, dann wird nicht jedesmal bei einer Ersetzung der komplette String kopiert.

Eine Idee könnte dir dieser Code geben, der ebenfalls eine Ersetzung durchführt:
http://www.delphi-forum.de/viewtopic...=535934#535934
Mit dem Code habe ich viele Millionen Buchstaben pro Sekunde abarbeiten können (ich glaube 150 Millionen oder so).

Wie sieht dein Code denn aus? Sind da visuelle Komponenten involviert? Das könnte die größten Geschwindigkeitsprobleme verursachen, wenn man da nicht aufpasst.

Namenloser 10. Apr 2009 02:20

Re: FastStrings eingestellt?
 
Also einen optimierten Code, um mehrere Patterns auf einmal zu ersetzen habe ich hier auf jeden Fall schon gesehen.
Über Google habe ich den hier gefunden, ich hoffe, das ist der richtige.

jaenicke 10. Apr 2009 02:23

Re: FastStrings eingestellt?
 
Ja, den meinte ich, aber in diesem Fall geht es noch sehr viel schneller, da es um einzelne zu ersetzende Zeichen geht, die man vorher in einem Array optimal speichern kann, so dass nur wenige einfache Operationen jeweils notwendig sind.


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

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