|
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처리 함수 없나요....
: 컴포넌트 에 빠른 어셈블리로된게 있던데...
: 설치가 안되네요...
: 사용법 아시는분은 도움바랍니다...
|