Astuce pour aller 27 fois plus vite que RichEdit.Lines.Assign(St

cs_pseudo3 Messages postés 268 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 2 février 2021 - 1 janv. 2016 à 12:25
 cs_pseudo3 - 11 janv. 2016 à 10:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/101326-astuce-pour-aller-27-fois-plus-vite-que-richedit-lines-assign-st

Bonjour Cirec et Bonne Année,

Bingo! c'est effectivement bien plus simple et même un peu plus rapide :

RichEdit1.Assign Standard : mis 35s 180 ms
RichEdit1.AddStrings Standard : mis 35s 250 ms
AssignMaison(SLSource,RichEdit1) : mis 1s 320 ms
AssignMaisonCirec (FileName,RichEdit1) : mis 1s 290 ms
facteur de gain de vitesse AssignMaisonCirec = 35250/1290 = 27,3
(avec Intel Core i7-2700K à 3,5 GHz)

J'ai l'impression que RichEdit1.Assign(TStringList) Standard et AddStrings() Standard sont des usines à gaz qui perdent leur temps à faire des trucs inutiles en particulier si la StringList ne contient aucun objet.
Et je parie que cette lourdeur héritée de Delphi 1 perdure dans les versions plus récentes telles que les XE...

Cordialement et à +.
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
10 janv. 2016 à 16:59
Salut et Bonne Année !!


c'est pas mal ... bien vu

mais je pense qu'il y avait encore plus simple :
  ...
  for i := 1 to 10 do begin
    RichEdit1.Lines.BeginUpdate;
    RichEdit1.Clear;
    RichEdit1.Text := SLSource.Text;
    RichEdit1.Lines.EndUpdate;
  end;
  ...

RichEdit1.Assign Standard : mis 1m 24s 453 ms
AssignMaison(SLSource,RichEdit1) : mis 3s 594 ms
AssignMaisonCirec RichEdit1.Text := SLSource.Text : mis 3s 469 ms

@+ Cirec
Rejoignez-nous