When the Array Fills Up

Inside Python Lists


CPython에서 list 길이를 늘리며 잰 메모리 크기와 append 시간에는 여유 용량과 재할당으로 해석할 수 있는 부분과 없는 부분이 있다.

메모리 단계원소 수는 하나씩 늘지만 getsizeof 값은 몇 단계에 걸쳐 커진다.
측정과 해석크기가 뛰는 지점은 재할당과 일관되지만 용량을 직접 보여 주지는 않는다.
측정 범위값은 한 CPython 실행의 관찰값이며 Python의 보장이 아니고 환경에 따라 달라진다.

list 객체 크기는 길이가 늘 때마다가 아니라 몇 단계로 커진다

list 길이를 바꾸면 그 길이에서 기록한 getsizeof 값과 막대, 직전 길이와의 차이가 함께 바뀐다.

막대 높이는 바이트 수다. 초록 윗선은 직전 길이보다 크기가 커진 지점, 짙은 테두리는 지금 고른 길이다.

append 한 번당 시간은 규모가 100배 커져도 크게 늘지 않는다

측정 규모마다 n번 append한 전체 시간과 한 번당 시간을 함께 둔다.

규모별 전체 시간과 한 번당 시간이다. 짙은 테두리 카드가 고른 규모다.