블로그는 나의 힘!

[ stl 처리 속도 테스트 ]

 

- stl(vector, list, queue, map, hash_map)의 처리 속도를 테스트 해 보았다.

- 사용 라이브러리: Visual C++ 6.0, Visual.NET, STLPort-4.6.2

- 테스트 방식

   1. 각 4KByte크기의 구조체를 100,000번 new로 할당 하여 추가

   2. 추가한 100,000개의 데이터 읽기.

       queue는 데이터를 읽은 후 특성상 바로 제거.

       map은 매번 검색방식으로 데이터를 찾은 후 읽기

   3. 100,000개의 추가된 데이터 delete 후 제거

   * 시간은 평균시간(초)을 계산하였다.

   * 테스트 사양: P4 2.4GHz, 512M

STL 처리 속도 테스트.. 


- MSVC6.0 Debug

   + vector

      . push_back: 0.000005
      . read: 0.000000
      . erase: 0.000221

   + list

      . push_back: 0.000006
      . read: 0.000001
      . erase: 0.000005

   + queue

      . push: 0.000006
      . read & pop: 0.000004

   + map

      . insert: 0.000017
      . read: 0.000004
      . erase: 0.000008

 

- MSVC6.0 Release

   + vector

      . push_back: 0.000002
      . read: 0.000000
      . erase: 0.000061

   + list

      . push_back: 0.000003
      . read: 0.000000
      . erase: 0.000001

   + queue

      . push: 0.000003
      . read & pop: 0.000001

   + map

      . insert: 0.000005
      . read: 0.000001
      . erase: 0.000001

 

- MSVC.NET Debug

   + vector

      . push_back: 0.000024
      . read: 0.000001
      . erase: 0.019186

   + list

      . push_back: 0.000057
      . read: 0.000001
      . erase: 0.000058

   + queue

      . push: 0.000029
      . read & pop: 0.000040

   + map

      . insert: 0.000827
      . read: 0.000008
      . erase: 0.000115

 

- MSVC.NET Release

   + vector

      . push_back: 0.000002
      . read: 0.000000
      . erase: 0.000061

   + list

      . push_back: 0.000003
      . read: 0.000000
      . erase: 0.000001

   + queue

      . push: 0.000003
      . read & pop: 0.000005

   + map

      . insert: 0.000596
      . read: 0.000000
      . erase: 0.000010

 

- STLPort-4.6.2 사용 MSVC6.0 Debug

   + vector

      . push_back: 0.000005
      . read: 0.000000
      . erase: 0.000068

   + list

      . push_back: 0.000006
      . read: 0.000000
      . erase: 0.000005

   + queue

      . push: 0.000006
      . read & pop: 0.000005

   + map

      . insert: 0.000012
      . read: 0.000004
      . erase: 0.000005

   + hash_map

      . insert: 0.000009
      . read: 0.000001
      . erase: 0.000006

 

- STLPort-4.6.2 사용 MSVC.NET Debug

   + vector

      . push_back: 0.000022
      . read: 0.000000
      . erase: 0.000098

   + list

      . push_back: 0.000023
      . read: 0.000001
      . erase: 0.000022

   + queue

      . push: 0.000023
      . read & pop: 0.000022

   + map

      . insert: 0.000035
      . read: 0.000006
      . erase: 0.000022

   + hash_map

      . insert: 0.000027
      . read: 0.000001
      . erase: 0.000024

 

- STLPort-4.6.2 사용 MSVC6.0 Release

   + vector

      . push_back: 0.000004
      . read: 0.000000
      . erase: 0.000072

   + list

      . push_back: 0.000003
      . read: 0.000000
      . erase: 0.000001

   + queue

      . push: 0.000004
      . read & pop: 0.000001

   + map

      . insert: 0.000004
      . read: 0.000000
      . erase: 0.000001

   + hash_map

      . insert: 0.000004
      . read: 0.000000
      . erase: 0.000001

 

- STLPort-4.6.2 사용 MSVC.NET Release

   + vector

      . push_back: 0.000002
      . read: 0.000000
      . erase: 0.000066

   + list

      . push_back: 0.000003
      . read: 0.000000
      . erase: 0.000001

   + queue

      . push: 0.000004
      . read & pop: 0.000001

   + map

      . insert: 0.000004
      . read: 0.000000
      . erase: 0.000001

   + hash_map

      . insert: 0.000004
      . read: 0.000000
      . erase: 0.000001

 

*** 위 결과에서 보면 .NET의 기본 stl은 6.0에 비해 성능이 떨어지는 것으로 나왔다. 특히 map에서는 현저한 속도 차이를 나타내고 있다.

 

*** .NET에서는 map사용시 STLPort 사용을 필수로 해야 할거 같군요.

 

[민샘 블로그에서 펌]

 

 

출저 : http://blog.naver.com/redkain/60011317826

 

 

 

Posted by Mister_Q