프로그래밍을 할 때 리스트와 튜플을 사용하여 데이터를 저장할 수 있다. 이 두 자료형은 많은 면에서 비슷하지만, 메모리 사용량에서는 차이가 있다. 이 글에서는 리스트와 튜플의 메모리 사용량 차이를 설명해보겠다.
리스트와 튜플의 메모리 사용량 비교
리스트와 튜플은 각각 데이터를 저장하는 방식이 다르기 때문에 메모리 사용량에서도 차이가 난다. 일반적으로 튜플이 리스트보다 메모리를 덜 사용한다.
예시
# 리스트와 튜플 생성
a_list = [1, 2, 3]
a_tuple = (1, 2, 3)
# 메모리 사용량 확인
print(a_list.__sizeof__()) # 출력: 64
print(a_tuple.__sizeof__()) # 출력: 48
위 예시에서 볼 수 있듯이, 동일한 데이터를 저장할 때 리스트는 64바이트를 사용하고, 튜플은 48바이트를 사용한다.
메모리 사용량 차이의 이유
- 가변성:
- 리스트는 가변적이어서 요소를 추가하거나 삭제할 수 있다. 이를 위해 리스트는 추가적인 메모리를 할당하여 데이터를 저장하고 관리해야 한다. 반면, 튜플은 불변적이어서 한 번 생성되면 변경할 수 없다. 따라서 튜플은 고정된 메모리만 할당하면 된다.
- 오버 할당:
- 리스트는 요소를 추가할 때마다 메모리를 재할당하는 비용을 줄이기 위해 오버 할당(over-allocation) 기법을 사용한다. 이는 리스트가 더 많은 메모리를 사용할 수 있게 한다. 반면, 튜플은 이러한 오버 할당이 필요 없으므로 더 적은 메모리를 사용한다[1][2].
- 구조적 차이:
- 리스트는 각 요소에 대한 포인터를 저장하는 데 추가 메모리를 사용한다. 반면, 튜플은 이러한 포인터를 저장하지 않아 더 적은 메모리를 사용한다[1].
[1] https://stackoverflow.com/questions/46664007/why-do-tuples-take-less-space-in-memory-than-lists
Citations: [1] https://stackoverflow.com/questions/46664007/why-do-tuples-take-less-space-in-memory-than-lists [2] https://www.reddit.com/r/learnpython/comments/1b9rdxq/list_vs_tuple_mutable_vs_immutable_performance/ [3] https://stackoverflow.com/questions/20771470/list-memory-usage [4] https://www.geeksforgeeks.org/memory-management-in-lists-and-tuples-using-python/ [5] https://www.geeksforgeeks.org/python-memory-consumption-dictionary-vs-list-of-tuples/ [6] https://www.upgrad.com/blog/list-vs-tuple/ [7] https://github.com/BecomeWeasel/daily_algo_challenge/issues/2
'job > python' 카테고리의 다른 글
집합 자료형을 실무에서 사용할 수 있는 상황 (0) | 2024.08.07 |
---|---|
리스트와 튜플의 사용 시점을 결정하는 기준 (0) | 2024.08.07 |
리스트와 튜플의 차이 (0) | 2024.08.07 |
인덱싱, 슬라이싱을 활용한 2차원 배열 처리 (0) | 2024.08.07 |
문자열: 인덱싱, 슬라이싱 (0) | 2024.08.07 |