컴퓨터의 핵심이 되는 CPU의 연산장치를 코어라고 부르며, 이 코어가 2개 이상인 CPU를 멀티코어 CPU라고 부릅니다. 초창기의 PC는 코어가 1개인 싱글 코어 CPU였지만, 최근에는 모바일용 CPU도 대부분 멀티코어 CPU로 출시될 만큼 일반화되었기 때문에, 멀티코어를 지원하느냐 지원하지 않느냐 여부는 소프트웨어의 성능을 평가하는 중요한 요소가 됩니다.
반디집은 멀티코어를 이용한 압축 기능을 제공합니다. 압축 작업은 CPU 연산이 많이 필요한 작업이기 때문에, 멀티코어를 이용하여 병렬로 처리할 경우 속도향상에 큰 도움이 됩니다.
이 기능을 사용하면 쿼드코어(8스레드 지원) 기준으로 싱글코어 대비 최대 6배 더 빠르게 압축할 수 있으며, 옥타코어(16스레드 지원)에서는 최대 13배까지 빠릅니다.
아래는 코어가 매우 많은 CPU(Intel Xeon, 28코어 56스레드)가 설치된 윈도우 PC에서, 반디집의 압축 속도를 타 프로그램과 비교한 영상입니다. GIF으로 보기
아래는 4코어 8스레드 맥북프로에서, 멀티코어를 지원하는 반디집과 멀티코어를 지원하지 않는 파인더가 각각 압축하는 모습을 비교한 이미지입니다.
반디집으로 압축할 때는 멀티코어를 활용하여 CPU 점유율이 끝까지 올라가는 것을 볼 수 있지만, 압축을 풀 때는 CPU 점유율이 높지 않은 것을 확인할 수 있습니다.
그 이유는 데이터를 압축하는 알고리즘의 특성 때문입니다. 대부분의 압축 알고리즘은, 앞부분의 데이터를 참고해서 뒷부분의 데이터를 압축하는 방식을 사용합니다. 이런 경우 압축할 때는 병렬 작업을 통해서 압축하는 것은 가능하지만 압축을 풀 때는 앞부분이 풀려야만 뒷부분을 풀 수 있기 때문에 압축 작업과 달리 병렬작업이 불가능하여, 어쩔 수 없이 싱글 코어만 활용해서 압축을 풀게 되므로, CPU 활용률이 떨어지게 됩니다.
그러나 최근에는 기술의 발전에 따라 압축을 해제할 때에도 멀티 코어를 활용하는 방법들이 여럿 개발되었습니다. 일반적으로 압축된 데이터를 여러 블럭으로 나누고 각각을 병렬로 처리하는 방법을 사용하며, 다음과 같은 압축 파일들에 대해 멀티 코어를 활용한 빠른 압축 해제를 할 수 있습니다.
그 밖에 압축을 할 때도 CPU 점유율이 높지 않은 문제가 종종 발생할 수 있습니다. 압축 작업은 다음과 같은 단계를 따라 이루어집니다.
일반적으로, 압축 중에 병목 현상이 발생하여 CPU 이용률이 높아집니다. 그러나 속도가 느린 저장 장치(외부 USB 드라이브, 네트워크 드라이브 등)를 사용하는 경우, 저장 장치의 입출력에 병목 현상이 발생해 CPU 이용률은 높아지지 않을 수도 있습니다.