Page 19 -
P. 19

왜 코드의 속도를 단계로 측정할까?

               누구도 어떤 연산이, 예컨대 정확히 5초가 걸린다고 단정할 수 없기 때문이다. 같은 연산도 어떤
               컴퓨터에서는 5초가 걸리고, 구형 하드웨어에서는 더 오래 걸릴 수 있다. 미래의 슈퍼컴퓨터에서
               는 훨씬 빠를 수도 있다. 시간은 연산을 실행하는 하드웨어에 따라 항상 바뀌므로 시간을 기준으
               로 속도를 측정하면 신뢰할 수 없다.

               대신 연산의 속도를 측정할 때 얼마나 많은 계산 단계(step)가 필요한가를 따져볼 수 있다. 연산 A
               에 5단계가 필요하고 연산 B에 500단계가 필요하면, 모든 하드웨어에서 연산 A가 연산 B보다 항

               상 빠를 거라고 가정할 수 있다. 결국 단계 수 측정이 연산 속도를 분석하는 핵심 비결이다.
               연산의 속도 측정은 연산의 시간 복잡도 측정으로도 알려져 있다. 이 책 전반에서 속도와 시간 복잡

               도, 효율성, 성능이라는 용어를 같은 의미로 사용하겠다. 네 용어 모두 주어진 연산에 걸리는 단계
               수를 나타낸다.

               이제 배열에 쓰이는 네 가지 연산으로 돌아가서 각각 얼마나 많은 단계가 필요한지 알아내 보자.





               1.4      읽기                                   DATA STRUCTURES AND ALGORITHMS






               첫 번째로 살펴볼 연산인 읽기는 배열 내 특정 인덱스에 어떤 값이 들어 있는지 찾아보는 것이다.

               컴퓨터는 딱 한 단계로 배열에서 읽을 수 있다. 배열 내 특정 인덱스에 한 번에 접근해서 볼 수 있
               기 때문이다. 앞선 ["apples", "bananas", "cucumbers", "dates", "elderberries"] 예제에서

               인덱스 2를 찾아본다면 컴퓨터는 인덱스 2로 바로 가서 "cucumbers"라는 값이 있다고 알려줄 것
               이다.

               컴퓨터는 어떻게 단 한 단계로 배열의 인덱스를 찾아볼 수 있을까? 그 방법은 다음과 같다.
               컴퓨터의 메모리는 셀로 구성된 거대한 컬렉션이라 할 수 있다. 다음 그림은 격자로 된 셀을 보여

               준다. 어떤 셀은 비어 있고, 어떤 셀에는 데이터가 들어 있다.










         032
   14   15   16   17   18   19   20   21   22   23   24