최상단 광고

2012년 6월 15일 금요일

std::list, std::vector 순회속도 비교


std::list, std::vector의 속도의 차이가 궁금해서 테스트를 좀 해봤다.

단순히 테스트를 하였고 정밀도는 떨어질수 있지만 대략적인 속도차이를 알고 싶었다.
단순히 vector가 list에 비해서 빠르다라고만 알고있고 구현도 알고만 있었지.
생각해보니 실재로 재어보고 대략 얼마나 차이나나 테스트를 안해봐서
짬나는 시간에 잠깐 테스트를 해봤는데
생각보다 결과는 놀라웠다.

std::list kList;
std::vector kArray;

각각의 컨테이너에 value값은 동일하게 넣고

std::list::iterator iter = kList.begin();
while(iter != kList.end())
{
int i = *iter;
++iter;
}

for(unsigned int ui = 0 ; ui < kArray.size() ; ++ui)
{
int i = kArray[ui];
}

결과는

- Element 순회 속도는 리스트가 벡터의 비해 6배 느리다
  Element의 갯수가 작을수록 차이는 크고 클수록 그 차이는 6.8배의 차이가 난다.
  1000개 이상에서는 거의 6.8배에서 크게 변화가 없다.
  1000개 이하에서는 차이가 더 벌어지고
  최대 14배의 차이가 난다.
  1개 -> 15배
  10개 -> 9.8배
  100개 -> 6.9배

생각보다 많이 나는구나.... 라고 생각을 하게 되었다.
물론 대략 느리다 라고 알고 있어서 될수 있다면 vector를 사용하지만 추가/삭제가 많은 곳에서는
list를 많이 사용했다.
물론 전에도 그랬지만 가끔 vector선호하기도 해서 사용하기도 했지만..
앞으로 더 주의를 기울일 생각이다.

댓글 없음: