Подтверждаю. Из десяти тысяч видно 2 тыщи, из пяти - одна, + зависает на десяток секунд.
Тот же код на гтк2 выполняется мгновенно и видно все строки.
Ускорение работы с listbox, combobox, memo ...
Модератор: Модераторы
Attid писал(а):да говорят же бага еще под вендой проверю и запостю.
кто нибуть под линем еще может подтвердить? по поводу того что не все под гтк1 отображается ? например на 5000 записей вижу только на тысячу с конца.
а на 3000 в листе только 20 записей.
Проверю на днях
А так сделал текстовый редактор с мемо
загрузка 16MByte file загружается за 12сек в Windows и за 7сек в linux
принцып загрузки линий как у листбокса так что незнаю
и кстати в линуксе мемо с таким обьемом даных работает намного шустрее
в винде если нахожусь в верхней части (строка 100 - 500 к примеру) вставка новой строки гдето 1сек - 1.5сек - в линуксе моментально 0.1сек
в конце мемо под виндовс тоже быстро уже
Под линукс использую GTK2
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Список заполняю 5000 элементов.
GTK1:
ListBox тормозит, Вставляется порядка 1000 записей - на экране видны записи с 4000 по 5000.
BeginUpdate/EndUpdate практически ничего не влияет.
Время вставки порядка 10 секунд.
ComboBox также не отображает все записи, тоже только последних 1000. С BeginUpdate/EndUpdate время вставки порядка 1 сек, без - порядка 3 секунд.
GTK2:
ListBox работает мгновенно, причём BeginUpdate/EndUpdate практически ничего не влияет, просто во случчае отсутсвия объвязки BeginUpdate/EndUpdate после заполнения списка видно масштабирование полосы скролинга.
ComboBox не расчитна видно на такие объёмы, причём скорее всего это даже не Lazarus виноват - впечатление что тормозит сам контрол.
С BeginUpdate/EndUpdate заполнение контрола происходило около 30 секунд, без - 1,5 минуты.
Работать с таким список просто не реально - неудобно, и есть артифакты отрисовки.
GTK1:
ListBox тормозит, Вставляется порядка 1000 записей - на экране видны записи с 4000 по 5000.
BeginUpdate/EndUpdate практически ничего не влияет.
Время вставки порядка 10 секунд.
ComboBox также не отображает все записи, тоже только последних 1000. С BeginUpdate/EndUpdate время вставки порядка 1 сек, без - порядка 3 секунд.
GTK2:
ListBox работает мгновенно, причём BeginUpdate/EndUpdate практически ничего не влияет, просто во случчае отсутсвия объвязки BeginUpdate/EndUpdate после заполнения списка видно масштабирование полосы скролинга.
ComboBox не расчитна видно на такие объёмы, причём скорее всего это даже не Lazarus виноват - впечатление что тормозит сам контрол.
С BeginUpdate/EndUpdate заполнение контрола происходило около 30 секунд, без - 1,5 минуты.
Работать с таким список просто не реально - неудобно, и есть артифакты отрисовки.
- Maxx_ir
- новенький
- Сообщения: 12
- Зарегистрирован: 24.02.2008 19:52:00
- Откуда: Тольятти
- Контактная информация:
Вопрос закрыт, заюзал TMemdataset
Кусок кода:
>>
var
_list: TStringList;
i: integer;
begin
Datasource1.DataSet := nil;
with MemDataset1.FieldDefs do begin
Add('Employee', ftString, 80, True);
end;
MemDataset1.CreateTable;
MemDataset1.Open;
_List := TStringList.Create;
_List.LoadFromFile('some.txt');
for i := 0 to (_List.Count - 1) do
begin
MemDataset1.Insert;
MemDataset1.Fields[0].AsString:= _List.Strings[i];
MemDataset1.Post;
end;
_List.Free;
Datasource1.DataSet := MemDataset1;
// Далее работаем с DbGrid, DbListBox etc.
end;
>>
Работает под GTK1 моментально.
Кусок кода:
>>
var
_list: TStringList;
i: integer;
begin
Datasource1.DataSet := nil;
with MemDataset1.FieldDefs do begin
Add('Employee', ftString, 80, True);
end;
MemDataset1.CreateTable;
MemDataset1.Open;
_List := TStringList.Create;
_List.LoadFromFile('some.txt');
for i := 0 to (_List.Count - 1) do
begin
MemDataset1.Insert;
MemDataset1.Fields[0].AsString:= _List.Strings[i];
MemDataset1.Post;
end;
_List.Free;
Datasource1.DataSet := MemDataset1;
// Далее работаем с DbGrid, DbListBox etc.
end;
>>
Работает под GTK1 моментально.
