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
[15436] STL 의 string이나 rope도 고려해보시길...
김백일 [cedar] 1730 읽음    2002-02-09 14:03
AnsiString도 대부분 인라인 어셈블리로 구현되어 있기때문에
그렇게 느리지 않습니다.
STL의 string은 어떨까요?
string은 물론 C++ 코드만으로 작성되었지만,
참조 카운팅(reference counting)이라는 기법을 써서 속도를 향상시켰습니다.
비교적 쓸만합니다.
단, 멀티 쓰레딩 환경에서는 느려진다는 단점이 있지요.
만약 대용량의 스트링 처리를 해야 한다면
TStringList을 쓰시거나, STLport의 비표준 컨테이너인 rope(string을 모아서 새끼줄로 만들었다는 뜻입니다. ^_^)를 써보세요.
STLport는 빌더6에는 기본으로 포함되어 있다고 데이터시트에 나오네요.
(빌더5까지의 Rogue Wave의 STL 라이브러리를 아예 대체했는지,
동시에 지원하는 지는 모르겠네요. 빌더6를 써보신 분은 이 글 보시면 답장 부탁합니다.)
물론 STLport는 빌더5 이하에서도 한큐에 설치됩니다.
구린 M$ VC++에서는 설치가 불가능하더군요.(혹시 성공하신분?)
하여튼 rope는 문자열 전체를 대상으로 한 동작에 최적화되어 있습니다.
대입(assignment), 연결(concatenation), 부분 문자열(substring) 등의
연산이 문자열의 길이에 상관없이 수행됩니다!
반면에 문자를 하나씩 바꾸는 동작은 오히려 무지 느립니다.

아니면 (님이 원하시는 작업의 특성에 따라 달라지겠지만)
vector<char>나 다른 컨테이너를 써서 구현하는 방법도 있습니다.

그래도 맘에 안드신다면 빌더에서 MFC의 CString을 그대로 쓸 수도 있습니다.

아담 님이 쓰신 글 :
: Visual C의 CString함수에 비해 속도가
: 떨어지네요....
: 흑
: 좀빠른 String처리 함수 없나요....
: 컴포넌트 에 빠른 어셈블리로된게 있던데...
: 설치가 안되네요...
: 사용법 아시는분은 도움바랍니다...

+ -

관련 글 리스트
15434 String 을 써서 작업을 하는데 속도가 넘느리네요 아담 916 2002/02/09
15635     Re:String 을 써서 작업을 하는데 속도가 넘느리네요 아담 1003 2002/02/19
15436     STL 의 string이나 rope도 고려해보시길... 김백일 1730 2002/02/09
15438         답변 감사합니다.. Visual C의 CString함수는 어케쓰나요..? 아담 1571 2002/02/09
15440             빌더는 원래 MFC 코드를 그대로 컴파일할 수 있습니다. 김백일 1118 2002/02/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.