프로파일러로 병목 지점을 추적해 소프트웨어 원인을 찾아낸 경험 중심으로 푸는 결
인턴 때 임베디드 시스템에서 데이터 처리 속도가 예상보다 훨씬 느린 문제를 분석하는 일을 맡았습니다. 처음엔 하드웨어 성능이 부족한 것 같았는데, 선임이 먼저 소프트웨어 쪽을 보라고 했습니다. 프로파일러를 붙여 실행 시간을 측정했더니 특정 직렬화 함수에서 전체 처리 시간의 60% 이상이 소비되고 있었습니다. 원인을 보니 데이터를 처리할 때마다 메모리를 새로 할당하는 패턴이었습니다. 메모리를 미리 할당해두고 재사용하는 방식으로 바꿨더니 처리 속도가 약 2.5배 빨라졌습니다. 그런데 이번엔 다른 모듈에서 간헐적으로 응답 지연이 생겼습니다. 그 부분은 제가 건드린 게 아니어서 처음엔 원인을 찾기 어려웠는데, 알고 보니 캐시 미스가 늘어난 것이었습니다. 메모리 재사용 패턴이 데이터 접근 순서를 바꿔버렸던 것입니다. 성능 개선이 다른 곳에 영향을 줄 수 있다는 걸 이때 처음 배웠습니다.