-
압축 라이브러리 및 성능 비교
-
압축 라이브러리를 이용한 대용량 Data I/O
-
비동기 IO를 사용한다.
-
병렬 프로그래밍 라이브러리를 활용한다.
비교 사이트 : http://warp.povusers.org/ArchiverComparison/
추천 라이브러리 : 7-Zip, bzip2
7-Zip 라이브러리 for C++ : http://www.7-zip.org/sdk.html
Bzip2 라이브러리 : http://www.bzip.org/downloads.html (compile 필요)
DISK I/O, 메모리, CPU 에서의 Data 처리 속도는
DISK <<<<<<<<< 메모리 <<<<<<<<<<<<<<<<<< CPU 입니다.
즉 모든 Data 는 되도록 CPU 에서 처리하면 좋습니다. 다만 CPU는 Data 처리 공간이 제한되므로 되도록 메모리에서 처리할 수 있는 것이 가장 효과적입니다.
이에, 대용량 DATA를 DISK <-> 메모리에 읽기/쓰기를 수행할 때, 압축을 통해 Disk 에 저장하고, 읽을 때 압축을 해제하여, Disk IO 작업을 최소화 하게 되면, 프로그램 성능을 상당히 높힐 수 있습니다.
현재 C++ 용 비동기 IO 라이브러리 또는 비동기 호출 문법이 있는지 모르겠지만, C#이나 Java에서도 제공되므로, 있을 것입니다.
예제: http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/536dd521-99f9-4721-b10a-b80cb2147339/
Visual C++ 용 Parallel Program Library (http://parallelpatternscpp.codeplex.com/) 를 이용하면, 멀티 코어 CPU에서 동시 작업 및 비동기 작업 (Background Thread 작업) 이 가능해지고, 대용량 Data 처리도 병렬로 가능해 지므로, 성능 향상에 기여합니다.
==> 이상적으로는 논리적 CPU 개수가 4개라면, 3~3.5배의 성능향상을 가져올 수 있습니다.
댓글 없음:
댓글 쓰기