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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
monRichEdit.lines.add('Ma ligne');
J'ai fais un petit test de rapidité
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.