PS: 파이썬 시간복잡도, 공간복잡도를 실제로 확인해보기

고병찬·2024년 1월 12일
0

PS

목록 보기
8/20
post-custom-banner

파이썬으로 코테 풀 때 시간과 메모리 제한에 대해

  • 백준에서 출력되는 시간과 메모리 기준은 어떻게 정해지는가

글 읽기 - 시간과 메모리는 어떤 기준으로 줄거나 길어지는건가요?

  • 백준에서 파이썬 시간과 메모리 사용량 테스트 결과

시간 : 1초당 약 1500만번~ 2000만번 연산 (대략 for문 6만번 연산 당 4ms = 1.5만번 연산 당 1ms = 1500만번 당 1초)

메모리 : 1MB당 int 변수 약 2.5만개인 리스트 (int변수 1만개 리스트 당 400~420KB → 리스트에서 int변수 하나당 약 40 Byte 차지)

  • 왜 int 하나당 약 40 Byte가 차지되는지 확인

파이썬에서 리스트에 변수가 저장되면 call by reference 형태로 저장된다.

이는 getsizeof()함수를 통해 알 수 있다.

https://docs.python.org/ko/3/library/sys.html

리스트 객체가 직접 기여한 메모리는 요소가 하나 추가될 때 8Byte 늘어난다. 즉 리스트의 각 요소가 reference로 저장된다.

그러면 int변수 기본 28 Byte + 리스트에 요소가 저장될 때 8 Byte = 36 Byte

그럼 나머지 4 Byte정도는 어디서 나오는가

리스트가 길어지면 요소들의 주소값 외에 리스트 자체 메모리 크기도 커지는 것 같다.

리스트 h의 메모리 사용량 8448728 Byte - 요소가 차지하는 메모리는 8 Byte * 1000000

= 448728 Byte가 리스트 자체 메모리 크기로 보인다.

파이썬에서 int 변수의 크기는 왜 28 Byte로 클까

https://tyoon9781.tistory.com/entry/python-int-size-28bytes

  • 다뤄야 할 변수가 매우 많다면?

generator?

그외 시간복잡도, 공간복잡도 관련 참고할 블로그

CPP

https://syh39.github.io/algorithm/algorithm_2/

파이썬

https://wjswhdgur123.tistory.com/74

profile
안녕하세요, 반갑습니다.
post-custom-banner

0개의 댓글