![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Все доброго времени суток, не могли бы вы помочь оптимизировать работу следующей процедуры:
Код:
procedure TForm1.Button3Click(Sender: TObject); var L1,L2,L3:TStringList; D1:TOpenDialog; n1:string; i:integer; begin L1:=TStringList.Create; //создание 1го стринглиста L2:=TStringList.Create; //создание 2го стринглиста L3:=TStringList.Create; //создание 3го стринглиста D1:=TOpenDialog.Create(self); if D1.Execute then n1:=D1.Filename else exit; L1.LoadFromFile(n1); if D1.Execute then L2.LoadFromFile(D1.Filename) else exit; for i:=0 to L1.Count-1 do if L2.IndexOf(L1[i])=-1 then L3.Add(L1[i]); L3.SaveToFile('3.txt'); D1.Free;L1.Free; L2.Free; L3.Free; end; В общих чертах: есть файл 1 с набором строк есть файл 2 с набором строк-2 Задача из файла 1 удалить все строки, которые встречаются в файле 2 и результат записать в файл 3. НО проблема заключается вот в чем. В файле 1 около 2 млн. строк, в файле 20 тыс. В данном алгоритме обрабатывается 1000 строк из 2х млн. в 7-8 секунд, что даже не вооруженным взглядом видно, что очень долго. Есть ли какие нибудь идеи, как оптимизировать обработку файлов. Спасибо. |