첫째, 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 과 별 차이도 없다~



신고
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요