첫째, map안에 데이터를 넣을때는 항상 insert를 이용하여 넣을것
연관배열처럼 [] 을 이용하여 넣어도 되지만 만약 []했을때는 넣는 데이터의 생성자에 의해서 1번 초기화 되었다가 다시 사용자가 정의한 값으로 초기화가 되기 때문이다.
즉, 불필요한 생성자 호출과 초기화가 문제가 될 수 있다는 것
예)
map<int, int> col1;
col1[1] = 1;
이때 col1의 첫번째 데이터 first는 1로 초기화, second = 0으로 초기화 그 후에 1을 데입
.. 이게 100만개가 쌓이면 어떻게 차이 나는지 실험을 해봤다.
col1.insert(1,1); 이렇게나 col1.insert(make_pair(1,1)); 이렇게 사용 해도 된다.
100만개 테스트시
make_pair의 경우 13,8초,
value_type의 경우 13.5초
col1[i] = i 경우 16.2초
col1[i] = 16.6초
소심한 성능을 향상을 위해선 value_type을 쓰면 좋을듯.. ㅋ
make_pair은 사용하기가 매우 편하고 value_type 과 별 차이도 없다~
연관배열처럼 [] 을 이용하여 넣어도 되지만 만약 []했을때는 넣는 데이터의 생성자에 의해서 1번 초기화 되었다가 다시 사용자가 정의한 값으로 초기화가 되기 때문이다.
즉, 불필요한 생성자 호출과 초기화가 문제가 될 수 있다는 것
예)
map<int, int> col1;
col1[1] = 1;
이때 col1의 첫번째 데이터 first는 1로 초기화, second = 0으로 초기화 그 후에 1을 데입
.. 이게 100만개가 쌓이면 어떻게 차이 나는지 실험을 해봤다.
col1.insert(1,1); 이렇게나 col1.insert(make_pair(1,1)); 이렇게 사용 해도 된다.
100만개 테스트시
make_pair의 경우 13,8초,
value_type의 경우 13.5초
col1[i] = i 경우 16.2초
col1[i] = 16.6초
소심한 성능을 향상을 위해선 value_type을 쓰면 좋을듯.. ㅋ
make_pair은 사용하기가 매우 편하고 value_type 과 별 차이도 없다~
'연구실 > 파편화된 기록들' 카테고리의 다른 글
C++0x : 새로운 C++의 문법 (0) | 2008.05.10 |
---|---|
STL # (2) | 2008.05.10 |
도움이 될만한 이야기 (0) | 2008.05.10 |
열혈강의 C++ 에서.. (0) | 2008.05.10 |
STL 함수-객체는 도데체 어디에 쓰일까? (0) | 2008.05.05 |
C++ 의 algorithm 헤더에서 제공해주는 막강한 보조함수 min(), max(), swap() (0) | 2008.04.26 |
auto_ptr 익히기 (0) | 2008.04.26 |
C++ static_cast, dynamic_cast, const_cast, reinterpret_cast (0) | 2008.04.24 |
C++ 을 왜 이용 하는가? (0) | 2008.04.20 |
프로그래밍 관련 서적을 읽던 도중.. (0) | 2008.04.10 |
최근댓글