[ 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 사용을 필수로 해야 할거 같군요.
[민샘 블로그에서 펌]
'[ Programing ] > STL & Booster' 카테고리의 다른 글
set에 중복& 정렬 설정 custom operator 로 변경하기 (0) | 2013.05.22 |
---|---|
날짜 기간 계산 의사 랜덤 코드 uniform_int_distribution (0) | 2013.05.22 |
Boost 설치 설명 (0) | 2013.05.21 |
STL Debug 모드 에서 속도 난감할때.. (0) | 2013.05.21 |
bitset (0) | 2013.05.21 |