아래에 글이 있길래 짤막하게 이야기해보자면..

1. 프로파일링을 통해 병목지점을 파악한다. 높은 확률로 반복문 내부다.

2. 기존 코드들은 높은 확률로 단일스레드에 맞춰 짜여져 있다

3. 소스코드를 읽고 공유자원을 먼저 제거한다

4. 코어의 개수만큼 스래드를 쪼갠다. 만약 12코어고 반복문이 120번 돈다면 각 코어가 10번씩 반복문이 돌게하면 되도록 만든다(그 이상으로 쪼개면 불필요한 문맥교환 생김)

5. 결과가 리스트 등의 자료구조로 병합되어야 하는 경우라면 병합시에 락을 걸어준다. 데이터 경합을 방지하기 위해서.

6. 결과의 순서가 보장되어야 하는 경우라면 별도의 정렬 알고리즘을 준비한다.


생각보다 자잘하게 할 일이 많았던 것 같습니다.

더 좋은 방법이라거나 경험이 있으시면 공유해 주시면 좋을 것 같습니다.