프로그램을 구현했는데 성능이 부족한 경우가 종종 발생한다.
이런 경우 알고리즘 개선을 통해서 성능을 개선할 수도 있지만 더이상 알고리즘 개선이 어려운 경우
동시성과 병렬성을 통해 성능 향상을 시킬 수 있다.
동시성(Concurrency)
흔히 말하는 멀티태스킹이다
멀티태스킹에서 여러분은 한 순간에 하나의 일을 하고 있지만 이를 아주 빨리 번갈아 할 수 있지만 마치
동시에 처리하는 것처럼 보임
A,B,C,D가 있을 때 일을 잘게 분할한 후 이를 조금씩 번갈아 가면서 처리하는 방식을 의미
병렬성(Parallelism)
동시성이 사실 한 순간에 하나의 일만을 처리한 것과 달리 병렬성은 진짜로 동시에 여러 개의 일을 처리
예를 들어 CPU에 멀티코어가 달려서 여러개의 테스크(일)을 처리할 수 있는 것이다.
지금까지 설명을 들어보면 병렬성을 사용하는 것이 좋아보인다. 하지만 항상 그런것은 아니다.
일단 병렬성은 물리적인 코어의 개수에 제한이 있다. 보통 일반 사용자라면 쿼트 코어(4개 코어) CPU를 주로 사용하고 있으며 많아야 8개 정도다. 즉, 한 순간에 처리할 수 있는 일의 양이 제한적
만약 어떤 작업이 I/O 위주의 작업이라면 실제로 CPU가 처리해야하는 시간은 상대적으로 적으며 대부분은 대기하는데 소모한다. 따라서 I/O 위주의 작업이 많다면 이때에는 동시성을 사용하는 편이 더 유리
'CS' 카테고리의 다른 글
리눅스 Git 설치 밎 사용법 (1) | 2022.01.21 |
---|---|
.gitignore을 이용하여 commit하기 (0) | 2022.01.11 |
호스팅이란 무엇인가 (0) | 2021.12.28 |
DNS와 작동 원리 (0) | 2021.12.28 |
브라우저의 작동 원리 (0) | 2021.12.27 |