Bonjour,
Quelqu'un pourrait-il m'expliquer pourquoi RichEdit.Lines.Assign(SLSource) est 27 fois plus lent que ma procedure AssignMaison(const SLSource: TStringList; var RichEd: TRichEdit) lorsque à partir d'un fichier de 1 Mo j'en extrais la StringList
que j'assigne 10 fois de suite à un RichEdit avec le code ci-après :
A+.
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 var SLSource: TStringList; procedure TForm1.bChargerZolaClick(Sender: TObject); var FileName: string; begin RichEdit1.Clear; FileName := ExtractFilePath(Application.ExeName) + 'Zola1Mo.txt'; TopChrono; with RichEdit1 do begin Lines.BeginUpdate; Clear; Lines.LoadFromFile(FileName); Lines.EndUpdate; end; Edit1.Text := fGoMoKo(TailleFichier(FileName)); SLSource := TStringList.Create; SLSource.Assign(RichEdit1.Lines); RichEdit2.Clear; end; procedure TForm1.bDixFoisAssignStandardClick(Sender: TObject); var i: integer; begin TopChrono; Sablier; for i := 1 to 10 do begin RichEdit1.Lines.BeginUpdate; RichEdit1.Clear; RichEdit1.Lines.Assign(SLSource); RichEdit1.Lines.EndUpdate; end; RichEdit2.Lines.Add('RichEdit1.Assign Standard : mis ' + fChrono); Sablier; end; procedure AssignMaison(const SLSource: TStringList; var RichEd: TRichEdit); var aStream: TMemoryStream; begin RichEd.Lines.Capacity := SLSource.Count; aStream := TMemoryStream.Create; SLSource.SaveToStream(aStream); aStream.Position := 0; RichEd.Lines.LoadFromStream(aStream); aStream.Free; end; procedure TForm1.bDixFoisAssignMaisonClick(Sender: TObject); var i: integer; begin TopChrono; Sablier; for i := 1 to 10 do begin RichEdit1.Lines.BeginUpdate; RichEdit1.Clear; AssignMaison(SLSource, RichEdit1); RichEdit1.Lines.EndUpdate; end; RichEdit2.Lines.Add('AssignMaison(SLSource,RichEdit1) : mis ' + fChrono); Sablier; end;
Partager