더북(TheBook)

getCustNameAddr 함수의 또 다른 기능, 즉 문자열을 연결해 리스트를 만드는 부분은 시간이 많이 소요되지 않는 원시적인 연산 작업이다. 따라서 getCustNameAddr 함수에서 가장 좋은 최적화 방법은 getCustAddr 함수를 호출하는 횟수를 줄이는 것이다.

getCustAddr 함수가 호출될 때마다 이 함수는 문자열을 연결해 키를 만든다. 이 원시적 연산에는 시간이 많이 걸리지 않는다. 이에 비해 키-값 데이터베이스에서 값을 가져오는 작업에 시간이 많이 걸린다. 그 이유는 값을 가져오려면 디스크에서 데이터를 읽어야 하기 때문이다. 즉, 읽기 작업은 판독 기록 헤드read/write head가 디스크에서 데이터가 있는 위치로 이동할 때까지 기다려야 한다.

디스크에서 읽기 작업이 완료될 때까지 기다리는 시간, 즉 대기 시간은 이 함수에서 다른 연산을 수행하는 데 필요한 시간보다 현저히 길다(그림 5-2).

▲ 그림 5-2 디스크에서 값을 읽는 작업은 판독 기록 헤드가 해당 트랙으로 이동한 다음 해당 블록까지 회전해서 가야 하므로 대기 시간이 길어진다

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.