Главная страница
    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.44 MB
Время: 0.043 c
15-1415309409
Юрий
2014-11-07 00:30
2015.09.10
С днем рождения ! 7 ноября 2014 пятница


3-1305109078
patrick1968
2011-05-11 14:17
2015.09.10
Десятичные поля запроса.


2-1394026817
Дмитрий
2014-03-05 17:40
2015.09.10
Общий тип для манипуляции несовместимыми типами с общими свойств.


15-1417815002
Юрий
2014-12-06 00:30
2015.09.10
С днем рождения ! 6 декабря 2014 суббота


11-1259876503
siealex
2009-12-04 00:41
2015.09.10
KOL/MCK @ Win Mobile: запускать внешние программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский