Ускорение работы с listbox, combobox, memo ...

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Сообщение B4rr4cuda » 26.02.2008 02:29:29

Подтверждаю. Из десяти тысяч видно 2 тыщи, из пяти - одна, + зависает на десяток секунд.
Тот же код на гтк2 выполняется мгновенно и видно все строки.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение AMD » 26.02.2008 04:00:26

Attid писал(а):да говорят же бага еще под вендой проверю и запостю.

кто нибуть под линем еще может подтвердить? по поводу того что не все под гтк1 отображается ? например на 5000 записей вижу только на тысячу с конца.
а на 3000 в листе только 20 записей.

Проверю на днях

А так сделал текстовый редактор с мемо
загрузка 16MByte file загружается за 12сек в Windows и за 7сек в linux
принцып загрузки линий как у листбокса так что незнаю

и кстати в линуксе мемо с таким обьемом даных работает намного шустрее

в винде если нахожусь в верхней части (строка 100 - 500 к примеру) вставка новой строки гдето 1сек - 1.5сек - в линуксе моментально 0.1сек

в конце мемо под виндовс тоже быстро уже

Под линукс использую GTK2
AMD
постоялец
 
Сообщения: 189
Зарегистрирован: 23.01.2008 22:25:25
Откуда: Кишинев

Сообщение alexs » 26.02.2008 09:26:26

Список заполняю 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 минуты.
Работать с таким список просто не реально - неудобно, и есть артифакты отрисовки.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4054
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Attid » 26.02.2008 11:08:23

отправил 10894

про комбик не говорил, думаю они связаны

UPD: подумал и добавил коментарием =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение debi12345 » 26.02.2008 12:30:57

С BeginUpdate/EndUpdate заполнение контрола происходило около 30 секунд, без - 1,5 минуты.

Нихрена себе GTK2 дает! Несчастные 5000 элементов.
Это на каком оборудовании ?
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Maxx_ir » 26.02.2008 12:52:03

Вопрос закрыт, заюзал 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 моментально.
Аватара пользователя
Maxx_ir
новенький
 
Сообщения: 12
Зарегистрирован: 24.02.2008 20:52:00
Откуда: Тольятти

Сообщение alexs » 26.02.2008 14:51:53

debi12345
GTK2 из состава ASPLinux 11.2, железо: AMD Atlon 1600
в GTK2 вобще некоторые вещи медленно работаю - в частности TextOut.
Maxx_ir
Это наиболее правильное решение. Ещё быстрее будет если, ты создаш постоянные поля и обращзаться к ним будеш MemDataset1Employee.AsString:='bla-bla-bla'
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4054
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

Рейтинг@Mail.ru