2011-03-23 4 views
4

Visual Studio 2010에서 C++로 작업하고 있습니다. 프로그램을 종료 할 때 파일로 저장하는 STL 세트가 있습니다. 다음에 프로그램이 시작될 때, (정렬 된) 데이터를 다시 세트로로드합니다. 로드 프로세스를 최적화하려고하는데 문제가 있습니다. 문제가 자주 재조정되는 것 같아요. 나는 그것을 피할 방법을 찾고 있습니다. ( ~ 5.5 분미리 정렬 된 데이터가있는 STL 세트로드 C++

다음

나는 삽입물의 버전을 사용하여 시도 :

첫째, "(const를 VALUE_TYPE & X)를 삽입 세트 ->"

시간 사용하여, 최적화를했다 당신은 삽입()의 위치에 대한 힌트를 전달 경우) :

: 대략

iterator insert (iterator position, const value_type& x); 

, 내가 이런 짓을 1,

시간 : ~ 5.4 간신히 분

어떤 개선! 문제는 파일에서 읽는 데 오버 헤드가 있다고 생각하지 않습니다. insert()를 주석 처리하면 시간이 2 초가됩니다. 나는 문제가 오버 헤드를 내 개체를 복사에 있다고 생각하지 않습니다 - 그것은 일반 오래된 데이터 개체를 int 및 char.

제가 생각할 수있는 유일한 점은 세트가 끊임없이 다시 균형을 유지한다는 것입니다.

1.) 내 추측에 동의합니까?

2.) 세트를로드하는 동안 재조정을 "일시 중지"하는 방법이 있습니까? 그런 다음 끝에 한 번 재조정하십시오. (또는 도움이 되겠습니까?)

3) 정렬 된 데이터를로드하는 스마트 한 방법이 있습니까? 즉, 최저에서 최고로 단순히 이동하지 않고 있습니까? 아마도 내 삽입을 번갈아 가며 자주 균형을 조정할 필요가 없습니까? (예 : 1, 1000, 2, 999, 3, 998, ...)

+4

이것은 디버그 빌드입니까? 시대는 하나처럼 보입니다. –

+0

아직 DEBUG 빌드입니다. 그러나 우리는 많은 양의 데이터로 작업하고 있으므로 ~ 5.5 분이 나를 놀라게하지 않습니다. – Jugulum

+0

"아직"== "예". – Jugulum

답변