C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[15093] [만해] 중복 검사 루틴인데요
만해 [greenuri] 801 읽음    2002-01-29 10:57
안녕하세요 만해 입니다.

제가 만드는 프로그램의 중복 검사 루틴인데요

좀 속도가 느려서

어찌 좀 빠른 방법 없을까 해서 질문 드립니다.

방금 체크 해 보니깐 약 20초 가량 걸리네요

typedef struct {
AnsiString URL;
long Id;
long Depth;
bool IsVisited;
bool IsDuplicate;
}TTreeData;

void __fastcall TMain::ProcessUrl(void)
{// LinkString의 값을 가져와서 이미 저장되어 있는 TempStringList에
// 있는지 체크 있으면 제거 없으면 추가.
int i = 0;
int j = 0;

TTreeData* tData;
  for ( i = 0 ; i < LinkString->Count ; i++ )
    {
      TTreeData * pData = (TTreeData*)LinkString->Items[i];
      pData->URL = Make_Regular_Url(pData->URL);
      AnsiString tmp = pData->URL;

      for ( j = 0 ; j < TempStringList->Count ; j++ )
        {
          tData = (TTreeData*)(TempStringList->Items[j]);
          tData->URL = Make_Regular_Url(tData->URL);
          AnsiString tTmp = tData->URL;
          if ( tTmp == tmp )
            break;
        }
      if ( j >= TempStringList->Count )
         // j >= TempStringList->Count  즉 중복되는 값이 없다면
        pData->IsDuplicate = false;
      else
        {
          pData->IsDuplicate = true;
          pData->Id = tData->Id;
          pData->Depth = tData->Depth;
        }
      TempStringList->Add(pData);  // TempStringList에 추가.
    }
}

전형적인 버블 소트 형태인데요

너무 느려서요

제 컴에서 20초면 다른 컴에서는 얼마나 걸릴지 (제 컴 P4 1.7Ghz인데도 20초나 걸려요 흑~)

고수님들의 도움 부탁 드립니다.

참 그리고 TempStringList하고 LinkString을 비교하면

처음에는 TempStringList가 LinkString보다 작지만

나중에 갈수록 TempStiringList가 LinkString보다 훨씬 커집니다.

도움 부탁 드릴께요~

+ -

관련 글 리스트
15093 [만해] 중복 검사 루틴인데요 만해 801 2002/01/29
15096     Re:[만해] 중복 검사 루틴인데요 김상구.패패루 1165 2002/01/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.