Measuring Cost

Python Operations


같은 결과를 만드는 Python 코드도 내부 작업이 다르다. 새 목록 생성, 원소 이동, 값 비교 가운데 어느 작업이 생기는지가 입력 크기에 따른 비용을 가른다.

append와 +기존 목록 변경과 새 목록 생성을 구분한다.
pop 위치앞에서 삭제하면 뒤 원소가 왼쪽으로 이동한다.
in 조회list와 dict에 모두 없는 값을 찾아 두 조회를 같은 조건에서 비교한다.

구조에서 생기는 작업을 단계별로 비교한다

비교 항목과 원소 수, 단계에 따라 두 코드의 누적 작업이 달라진다. 상자 수는 코드 구조로 셀 수 있는 작업이며 실행 시간이 아니다.

왼쪽과 오른쪽은 같은 결과를 만드는 두 코드다. 파란 상자 하나가 호출, 새 목록에 놓은 참조, 이동, 비교 가운데 한 번의 작업이고, 초록 상자가 현재 단계의 작업이다.

측정 조건과 측정값을 구조 근거와 함께 읽는다

위에서 고른 비교에 대해, 같은 조건으로 잰 호출당 시간의 중앙값을 아래에 둔다. 측정 입력의 n은 위 절의 n보다 훨씬 크다.

비교왼쪽 구조 작업오른쪽 구조 작업맞출 조건
목록 생성append 호출 n회새 목록에 1+···+n개 참조 배치함수 전체를 같은 n에서 잰다
원소 삭제끝 삭제, 뒤 원소 이동 없음앞 삭제, n-1개 참조 이동삭제 뒤 끝에 넣어 길이를 유지한다
없는 값 조회list에서 n개 값 비교dict에서 같은 값 -1 조회생성 시간 제외, 같은 값과 n을 쓴다