파이썬 메모리

범모 ( bbeom dev) ·2025년 2월 21일
0
  • 메모리제한 8 MB, 시간 제한 5초
  1. 파이썬 int 메모리

    파이썬에서 int는 28bytes이다
    파이썬 int는 64bit로 8bytes이고 나머지는 metadata라고 보면됨

  2. 파이썬 float 메모리

    float메모리는 24이다
    float는 64bit 8바이트 double이니까 나머지 16이 metadata이다. 그러면 int와 겹치는 부분은 16이니까 int는 metadata가 아닌 추가적인 무언가가 더 추가된다는 소리임


부호의 여부를 알면 float를 쓰는게 더 효율이 높은거 아닌가..?
이래서 그냥 numpy를 사용해서 int32 이렇게 array로 지정해주면 몇배는 더 효율적인것..


  1. 파이썬 list 메모리

    파이썬 list의 메모리는 56bytes이다
    저장되는건 포인터이므로 아마 1개 저장될때 8bytes 늘어날것임

    리스트에는 포인터 2개 들어가서 16bytes 추가되었고 a,b는 int이므로 28bytes니까 총 28+28+72인 메모리가 사용된것인듯


numpy를 쓰면 포인터를 저장하지 않고 연속된 배열에 저장함. 이걸 AI 분야에서는 중요하게 생각함. 떨어져있지 않고 쭉 이어져있는 구조 ( 갑자기 용어가 생각이 안남 )
예를 들어 numpy array에 int 5개 넣으면 4*5 해서 20bytes임
근데 np.int32 이렇게 각각 선언해주면 기본이랑 똑같이 28bytes가 들어가므로 array에 원소값을 바로 저장하는게 훨씬 효율적


profile
AI로 사회에 긍정적인 영향을 줄 수 있는 개발자가 되기 위해 성장하고 있습니다.

0개의 댓글