데이타 량이 많으니
시간이 많이 걸릴듯 하네요
아래 소스에서 a2 리스트를 TStringList 가 아닌 THashedStringList 로 사용하지구요
for문 돌려서 찾지 말고 IndexOf로 찾아보세요
for(int c = 0; c < a1->Count; c++)
{
if(a2->IndexOf(a1->Strings[c])<0)
{
a3->Add(a1->Strings[c]);
}
}
비교하는 문자열의 길이에 따라 차이가 많이 나긴 하는데요
약 10배정도에서 많게는 수백배 빨라집니다.
THashedStringList 는 #include <IniFiles.hpp> 에 정의되어있습니다.
그럼..
하안인 님이 쓰신 글 :
:
: 1.txt 와 2.txt 파일두개에서 3.txt 파일을 생성하려고 합니다.
: 1.txt의 열의값이 2.txt 의 열의 값이 존재하는 것은 빼고 없는 열만 3.txt 파일로 만들려고 합니다.
:
: StrList 을 이용해서 비교해서 파일은 만드는 작업을 했는데요.
:
: 데이타가 1.txt 에 10만개정도 2.txt 에 1~20만개의 데이타를 넣고
: 실행을 하니 언제 끝날지 모르겠네요.
: 속도가 너무느려서요.
:
: TStringList *a1, *a2, *a3;
: a1 = new TStringList;
: a2 = new TStringList;
: a3 = new TStringList;
: a1->Clear();
: a2->Clear();
: a3->Clear();
:
: a1->LoadFromFile("a1.txt");
: a2->LoadFromFile("a2.txt");
:
:
: for(b = 0; b < a1->Count; b++)
: {
: ino = 0;
: s = a1->Strings[b];
: for(c = 0; c < a2->Count; c++)
: {
: s1 = a2->Strings[c];
: if(s == s1)
: ino = 1;
: }
: if(ino == 0)
: a3->Add(s);
: }
: a3->SaveToFile("a3.txt");
:
:
|