Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.09.10;
Скачать: CL | DM;

Вниз

SQLite + FireDAC   Найти похожие ветки 

 
FMX   (2014-03-10 16:20) [0]

Нужно пробежать таблицу из 100 000 записей.

Делаю так:


procedure TForm1.ShowAllRecordsClick(Sender: TObject);
var
 TableItem: TADTable;
 I: Integer;
 FieldID, FieldName: TField;
begin
 TableItem := TADTable.Create(nil);
 try
   TableItem.Connection := ADConnection1;
   TableItem.Open("item");
   FieldID := TableItem.FieldByName("id");
   FieldName := TableItem.FieldByName("name");
   TableItem.First;
   I := 1;
   ListBox1.BeginUpdate;
   try
     while not TableItem.Eof do
     begin

       if I mod 250 = 0 then
         Caption := Format("%d of %d", [I, TableItem.RecordCount]);

       ListBox1.Items.Add(Format("id: %d; name: %s", [FieldId.AsInteger,
         FieldName.AsString]));
       TableItem.Next;
       Inc(I);
     end;
   finally
     ListBox1.EndUpdate;
   end;
 finally
   TableItem.Free;
 end;
end;


Практически мгновенно пробегаются первые 8 000 записей, затем пробег резко замедляется и дальше перебирает еле-еле. Почему так происходит? Как ускорить перебор?


 
Inovet ©   (2014-03-10 16:45) [1]

Ты все 100500 тыщ в ЛистБокс впихиваешь? Выход один - дождаться выпуска новых 100500 ядерных процессоров со 100500 гигами памяти на каждом, и новой ОС с новым ЛистБоксом под них. Впрочем, есть ещё варианты.


 
Inovet ©   (2014-03-10 16:47) [2]

Кстати, Скайп, которым теперь МС занимается, как раз так и делает и как раз из SQLite. Так что ждём-с.


 
sniknik ©   (2014-03-11 07:57) [3]

DisableControls
+
вот это - TableItem.RecordCount вынести за цикл... нафига дергать метод объекта каждый раз кто знает что в нем "лишнего" делается...



Страницы: 1 вся ветка

Текущий архив: 2015.09.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.034 c
15-1417707045
Дмитрий С
2014-12-04 18:30
2015.09.10
Получить все открытые документы Excel


2-1394454003
FMX
2014-03-10 16:20
2015.09.10
SQLite + FireDAC


2-1397148582
sdfdh
2014-04-10 20:49
2015.09.10
Нестабильно работет StrToDateTime()


15-1420313485
alexdn
2015-01-03 22:31
2015.09.10
Конвертер php в delphi


15-1409765726
Павиа
2014-09-03 21:35
2015.09.10
Осторожно. Новый вид атак.