Все доброго времени суток, не могли бы вы помочь оптимизировать работу следующей процедуры:
Код:
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 секунд, что даже не вооруженным взглядом видно, что очень долго.
Есть ли какие нибудь идеи, как оптимизировать обработку файлов.
Спасибо.