TRichEdit et lenteur d'affichage
Bonjour et bonne année.
J'ai une programme qui analyse des fichiers binaires et renvoie au fur et à mesure le resulat (compréhensible en mode texte) au travers d'un TRichEdit.
J'utilise un TRichEdit pour le formatage (Gras, couleur etc..).
Mon code pour ajouter les lignes est basic
Code:
1 2
|
monRichEdit.lines.add('Ma ligne'); |
J'ai fais un petit test de rapidité
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
procedure Tfmain.Button4Click(Sender: TObject);
var i : integer;
debut : tdatetime;
AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond : word;
begin
monRichEdit.Clear;
debut := now;
for i:=1 to 3000 do
begin
monRichEdit.SelAttributes.Style := [fsbold];
monRichEdit.Lines.Add(inttostr(i)+'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -');
monRichEdit.Lines.Add('Essai d ajout d une ligne dans le memo ');
end;
decodedatetime((now-debut),AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond);
Label_duree_parsing.Caption :='Durée traitement : '+ format('%2d',[(AHour)])+'h'+inttostr(AMinute)+'mn'+inttostr(ASecond)+'s'+
inttostr(AMilliSecond)+'ms';
end; |
Les résultats sont étonnants :
pour 1500 boucles : 2s200ms environ
pour 3000 boucles : 6s100 environ
Tout celà est très long et deux questions :
- Comment améliorer la performance (car finalement mon prog met plus de temps à afficher le resultats qu'a faire l'analyse)
- pourquoi c'est pas linaire (3000 boucles devrait être 2 fois plus lent que 1500) ?
Merci.