Mattias Gaertner wrote:
> Al Boldi <[EMAIL PROTECTED]> wrote:
> > > > > >> TListBox: 10k rows in 73sec
> > > > > >> TTreeView: 100k rows in 50sec
> > > > > >> TMemo: 100k rows in 30sec
> > > > > >> TListView: 100k rows in 1.5sec
> > > > > >> TStringGrid: 100k rows in 0.5sec
> > > >
> > > > Here is the code:
> > > > ============================
> > > > StringGrid1.RowCount:=100002;
> > > > i:=0;
> > > > repeat
> > > > inc(i);
> > > > StringGrid1.Cells[0,i]:='tst'+inttostr(i);
> > > > until i>100000;
> > > > ============================
> > >
> > > That's why I tried:
> > >
> > > StringGrid1.ColCount:=1;
> > > StringGrid1.BeginUpdate;
> > > for i:=1 to 100000 do begin
> > > StringGrid1.RowCount:=i;
> >
> > This line basically kills TStringGrid.
>
> Yes, but the IDE does not know the number of lines in advance.
> Of course it would be possible to write a wrapper to add in bigger
> chunks.
>
> > TStringGrid gains it's speed from preallocating the list.
> >
> > Preallocating the tree in TTreeView could improve its speed a lot.
>
> I doubt that. It already works with exponential growth.
Preallocate in 16sec ============
TreeView1.BeginUpdate;
TreeView1.Items.Clear;
for i:=1 to 100000 do
TreeView1.Items.Add(nil,'');
TreeView1.EndUpdate;
=================================
Fill tree in 2sec ===============
TreeView1.BeginUpdate;
for i:=1 to 100000 do begin
TreeView1.Items[i-1].Text:='tst'+IntToStr(i);
for j:=1 to 10 do
TreeView1.Items[i-1].Text:=IntToStr(i)+','+IntToStr(j);
end;
TreeView1.EndUpdate;
=================================
> I still wonder why your treeview times are so much slower than mines.
> Did you use Begin/EndUpdate?
No preallocation > 2min ^C ======
TreeView1.BeginUpdate;
TreeView1.Items.Clear;
for i:=1 to 100000 do begin
TreeView1.Items.Add(nil,'tst'+inttostr(i));
for j:=1 to 10 do
TreeView1.Items[i-1].Text:=IntToStr(i)+','+IntToStr(j);
end;
TreeView1.EndUpdate;
=================================
Thanks!
--
Al
_________________________________________________________________
To unsubscribe: mail [EMAIL PROTECTED] with
"unsubscribe" as the Subject
archives at http://www.lazarus.freepascal.org/mailarchives