음 저희회사 솔루션의 경우에 ATL 과 STL 을 섞어 쓰더군요 -_-;
클라이언트쪽은 MFC 다 보니까 ATL을 쓰고 서버쪽은 STL을 사용했더군요..
ATL은 MS에서 만든 어플에는 대부분 다 사용되었다고 하더라구요.. 그만큼 신뢰성이 있다는거겠죠.
STL 이 ATL과 비교해서 장점은 뭘까요? 많이 안써봐서 모르곘는데.. 일단 성능은 ATL이 더 좋다는 말을 들었습니다.
ATL vs STL
켁큇(kekkekba)
2008-12-27 21:26
추천 0
댓글 16
다른 게시글
-
컴싸는 미국에서도 슬슬 막장 타기 시작함 [1]흐음(qqupp) | 08.12.27추천 0
-
c++ 기본서 하나만 추천해주세요 ~~ [1]삼식이(116.42) | 08.12.27추천 0
-
와이브로 질문!! [2]FALC0N(116.32) | 08.12.27추천 0
-
컴퓨터가 고장나터치로 쓴다는.. 아쉣내용입력이안되 짤리겠네ㅠ 바이횽들(늅 [8]Aray(jeong3355) | 08.12.27추천 0
-
ㅇㅇ 역시 나는 천재적이야 [4]NaCl(rhaqhek) | 08.12.27추천 0
-
C언어 기초적인질문인데요 [3]헬프미(119.203) | 08.12.27추천 0
-
게임에 동영상넣기Vita500(masque79) | 08.12.27추천 0
-
오픈소스에 대한 간단한 이야기 [34]흐음(qqupp) | 08.12.27추천 0
-
학교 도서관에서 가끔 책을 빌리면 [2]NaCl(rhaqhek) | 08.12.27추천 0
-
오랜만임 [1]Alkyl(annih) | 08.12.27추천 0
여기서 말하는 ATL은 ATL collection library를 말하는거임??
넵
ATL Coll은 gcc에서 컴파일 될 수 있도록 쉽게 포팅이 가능함. 직접 해봤음. 한 시간이면 됨 -_- 그 만큼 잘 만들어졌음.
STL의 가장 큰 장점은 당연히 플랫폼 (거의) 독립이라는 점. 그러나 각 구현마다 매우 다른 미묘한 점, 성능상의 차이가 있음. 그래서 쓸거면 STL을 따로 관리해서 (부스트 그런거) 쓰는게 좋음.
STL, ATL 모두 포인터 기반 자료구조라 성능이 아주 좋지는 않음. 아주 특화해서 자신만의 매우 간단한 자료구조를 만드는게 보통 더 빠름. 물론 핵심은 메모리 할당인데.. STL/ATL 메모리 얼로케이터만 손보면 가능할지도 모르겠음.
STL의 두번째 큰 장점은 #include <algorithm>에 있음. ATL coll보다 훨씬 높은 추상화로 정말로 편리함. for_each, sort 같은 것을 보면 아주 잘 나와있음.
ATL coll의 장점은 무엇보다 소스가 이해하기 매우매우 쉬움. 소스 atlcoll.h 보면 진짜 금방 이해가 감. 그러나 STL은 이해가 거의 불가.
또 뭐가 있으려나... VC++에 딸려있는 STL 성능이 좋지 않아서 또 사용하기 편해서 ATL coll이 애용되는데 솔직히 STL을 쓰는게 더 깔끔한거 같음.
C++ 0x에는 auto가 새롭게 정의되는데... vector<int>::iterator i = vec.begin(); 이런 지저분한 코드가 auto i = vec.begin()으로 해결됨.
또 C++ 0x에는 람다가 추가되어 predicate 같은 걸 간단히 서술할 수 있음. 즉 functor를 안 만들어도 됨. 간단한 sort 함수 짤 때도 functor 만들어야했던 거 다 줄일 수 있음.
물론 ATL coll도 STL처럼 trait도 지원하고 상당히 잘 만들어져있으나 iterator에 대한 부분의 추상화가 거의 없다시피해서 알고리즘과 같은 제네럴한 구현이 힘든 편임.
ATL 은 iterating 을 POSITION 객체로 하는것 같던데요. 그게 iterator역할을 하는듯 합니당
근데 흐음님은 c 개발자신가요? 이쪽에 잘아시는것 같아서 ㅎㅎ
댓글 너무 달았다가 정지 먹었음 -_-; Azurespace 횽 말도 맞는 거 같음. 정말 속도를 위하면 아주 간단하게 할당을 최소화해서 spatial locality를 높이는게 핵심
ATL은 POSITION을 쓰는데 이건 사실 void*일 뿐이고 소스 보면 단순히 내부 CNode*를 그냥 캐스팅하는 거에 지나지 않음.
네, C/C++이 저의 주력 언어임다 ^_^