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
[26328] Re:Linked List 중 데이터 중간에 삽입삭제가 빠르고 대용랑 데이터 처리시 속도가 빠른 STL 은 뭐가 좋을
김백일.cedar [cedar] 2277 읽음    2003-07-14 15:41
아담 님이 쓰신 글 :
: TList는 레코드수가 많을경우 속도가 떨어지고  map은 중간에 데이터 삽입삭제가 안되고,
:
: STL의 list도 속도가 느리다 하고  직접만든 Linked List를 이용할수밖에 업나요?
:
: 좋은 list있으면 소개시켜주십시요... 
:
: 잘데리고 놀겠습니다.

그냥 써봤더니 이랬더라는 체감에 의한 방법보다는
실제로 속도 체크 실험을 해보시는 게 좋을 듯 합니다.

map은 연관 컨테이너이므로 list와는 용도가 전혀 다릅니다. 순서의 개념이 없죠.

참고로, 빌더6에 기본 포함된 STLport에는 slist라는 컨테이너가 있습니다.
ANSI표준의 list는 이중 연결 리스트(doubly linked list)이고,
SGI STL의 slist는 단일 연결 리스트(singly linked list)이므로 메모리도 약간 작게 차지하고, 포인터 연산 오버헤드도 작지요. 이것도 테스트해보시길...
단, 단일 연결 리스트는 한쪽 방향으로만 순회할 수 있기 때문에,
insert와 erase는 상수가 아니라 O(N)이 걸립니다.
그대신 insert_after와 erase_after를 제공합니다.
list보다는 확실히 빠르겠지만 사용은 불편하지요.

그리고 STLport를 비롯한 대부분의 STL 배포판에서,
list와 slist의 멤버함수인 size()의 동작시간은 O(N)임을 주의하시기 바랍니다.
이것은 splice() 함수의 기능과 trade-off 관계가 있기 때문에 그렇습니다.
splice()를 O(1)로 만들기 위해 어쩔 수 없이 size()가 O(N)이 되었습니다.
절대로 list::size()의 결과를 0과 비교하는 코드를 쓰지마시고, 대신 list::empty()를 쓰세요.

그리고 중간에 데이터 삽입/삭제가 생기는 경우가 적고, 랜덤 액세스가 자주 필요할 경우에는
vector나 deque을 쓰시기 바랍니다.



+ -

관련 글 리스트
26325 Linked List 중 데이터 중간에 삽입삭제가 빠르고 대용랑 데이터 처리시 속도가 빠른 STL 은 뭐가 좋을까요 아담 905 2003/07/14
26328     Re:Linked List 중 데이터 중간에 삽입삭제가 빠르고 대용랑 데이터 처리시 속도가 빠른 STL 은 뭐가 좋을 김백일.cedar 2277 2003/07/14
32817         Re:Re:Linked List 중 데이터 중간에 삽입삭제가 빠르고 대용랑 데이터 처리시 속도가 빠른 STL 은 뭐가 좋 김백일.cedar 997 2003/07/14
32816         Re:Re:Linked List 중 데이터 중간에 삽입삭제가 빠르고 대용랑 데이터 처리시 속도가 빠른 STL 은 뭐가 좋 김백일.cedar 900 2003/07/14
32815         Re:Re:Linked List 중 데이터 중간에 삽입삭제가 빠르고 대용랑 데이터 처리시 속도가 빠른 STL 은 뭐가 좋 아담 1106 2003/07/14
32814         Re:Re:Linked List 중 데이터 중간에 삽입삭제가 빠르고 대용랑 데이터 처리시 속도가 빠른 STL 은 뭐가 좋 아담 941 2003/07/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.