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