Xojo Developer Conference
25/27th April 2018 in Denver.
MBS Xojo Conference
6/7th September 2018 in Munich, Germany.

Stringfunktionen sind langsam (Real Studio network user group Deutschland Mailinglist archive)

Back to the thread list
Previous thread: RTF-Datei erzeugen
Next thread: Combobox frage


Probleme mit String Bearbeitung   -   Markus Schnell
  Stringfunktionen sind langsam   -   Stefan Mettenbrink
   Re: Stringfunktionen sind langsam   -   Christian Schmitz

Stringfunktionen sind langsam
Date: 14.08.11 11:43 (Sun, 14 Aug 2011 12:43:05 +0200)
From: Stefan Mettenbrink
Wie langsam die Stringfunktionen doch siind, ist mir gerade Gestern
wieder aufgefallen.

Ich hatte eine Listbox, die als RTF-Datei gesichert werden sollte.
Bisher habe ich dazu die einzelnen Zeilen in ein EditField geschrieben:
EditField1.Text=EditField1.Text+ListBox2.Cell(i,0)+"
"+ListBox2.Cell(i,0)+EndOfLine

Da gab es zwar noch diverse weitere Dinge (einfärben des Textes), aber
die Bremse war ganz klar die Stringoperation. Das fiel mir gar nicht
auf, da ich immer nur mit einigen wenigen Zeilen (maximal 200 Zeilen)
getestet habe.
Als mir ein Anwender schrieb, dass das Programm bei seinen ca. 10.000
Zeilen anscheinend hängen bleibt, habe ich das überprüft und kam
auf deutlich über dreieinhalb Stunden(!) für die Funktion.

Nachdem ich die Funktion so umgestellt habe, dass die Zeilen erst in ein
Array geschrieben und danach per Join in das EditField übertragen
werden, dauert das Ganze nur noch 3,55Sekunden(!)

Das nur mal als Hinweis, wie sehr doch die Join Funktion das eigene
Programm beschleunigen kann.

MfG, Metti.

Re: Stringfunktionen sind langsam
Date: 14.08.11 13:47 (Sun, 14 Aug 2011 14:47:05 +0200)
From: Christian Schmitz

Am 14.08.2011 um 12:43 schrieb Stefan Mettenbrink:

> EditField1.Text=EditField1.Text+ListBox2.Cell(i,0)+"
> "+ListBox2.Cell(i,0)+EndOfLine

argh!

wofür gibt es die appendText Methode?
Wäre ja schon mal schneller.

> Nachdem ich die Funktion so umgestellt habe, dass die Zeilen erst in ein
> Array geschrieben und danach per Join in das EditField übertragen
> werden, dauert das Ganze nur noch 3,55Sekunden(!)

Genau, so geht es!
Join und Split sind schön schnell.

Gruß
Christian

--
R