|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Привет всем! Оптимизировать!
Привет всем! Кто может подскажите! Проблема следующая:
Есть два файла dbf каждый примерно около 100 000 записей. Записи перегоняю в StringList, для каждого dbf свой StringList. Дальше сравниваю StringList-ы и по неким условиям пишу результат в другие StringList-ы. Работает очень медленно, примерно 2 500 записей обрабатываются 10 минут. Тормозит на этом цикле: Код:
// функция из dbf пишет в StringList StrListSprEgkNew := WriteDbfInStringList(dirFileSprNew); dirFileSprOld := FindDirForFileSpr(False); StrListSprEgkOld := TStringList.Create; // функция из dbf пишет в StringList StrListSprEgkOld := WriteDbfInStringList(dirFileSprOld); StrListSprEgkRez := TStringList.Create; StrListSprEgkRezInvalid := TStringList.Create; for iStrListSprEgkNew := 0 to StrListSprEgkNew.Count - 1 do begin markRez := 1; // метка писать в результирующий1 StringList markRezInvalid := 0;// метка писать в результирующий2 StringList codeEgkNew := strWord(StrListSprEgkNew[iStrListSprEgkNew],2,#9); // функция StrWord(s,n,a) из строки s вырезает позицию n разделителя a invalidNew := StrToInt(strWord(StrListSprEgkNew[iStrListSprEgkNew],4,#9)); for iStrListSprEgkOld := 0 to StrListSprEgkOld.Count - 1 do begin invalidOld := StrToInt(strWord(StrListSprEgkOld[iStrListSprEgkOld],4,#9)); codeEgkOld := strWord(StrListSprEgkOld[iStrListSprEgkOld],2,#9); if codeEgkNew = codeEgkOld then begin markRez := 0; if (invalidOld = 1) and (invalidNew = 0) then begin markRez := 1; end; if (invalidOld = 0) and (invalidNew = 1) then begin markRezInvalid := 1; end; end; end; if (markRez = 1) and (invalidNew = 0) then begin StrListSprEgkRez.Add(StrListSprEgkNew[iStrListSprEgkNew]); end; if markRezInvalid = 1 then begin StrListSprEgkRezInvalid.Add(StrListSprEgkNew[iStrListSprEgkNew]); end; Logger.Add(IntToStr(iStrListSprEgkNew)); end; подскажите как можно оптимизировать процесс? Последний раз редактировалось Admin, 27.09.2013 в 13:03. |