피드로 돌아가기
NumPy Arrays: Why Not Just Use a Python List?
Dev.toDev.to
AI/ML

연속 메모리 배치와 CPU Vectorization을 통한 연산 속도 94배 향상

NumPy Arrays: Why Not Just Use a Python List?

Akhilesh2026년 4월 25일12beginner

Context

Python List는 각 요소를 독립적인 객체로 처리하여 메모리에 분산 저장하는 구조를 가짐. 이로 인해 대규모 데이터 연산 시 객체 오버헤드와 개별 참조 방문으로 인한 성능 병목 발생.

Technical Solution

  • Continuous Block of Memory 설계를 통한 데이터 패킹으로 메모리 참조 효율 극대화
  • Homogeneous Data Type 강제를 통해 데이터 타입 확인 절차를 제거한 고속 연산 체계 구축
  • C-optimized 코드 및 CPU Vectorization Instruction 활용을 통한 병렬 처리 구현
  • dtype 명시적 제어를 통한 Memory Footprint 최적화 및 RAM 사용량 절감
  • Fancy Indexing 및 Boolean Indexing을 통한 Loop-free 데이터 필터링 구조 설계
  • vstack 및 hstack을 이용한 다차원 Feature Matrix 결합 아키텍처 적용

- 이미지 데이터(0-255) 처리 시 uint8 사용 여부 검토 - GPU 메모리 제약 상황에서 float64 대신 float32 적용 고려 - 대규모 데이터 필터링 시 Python Loop 대신 Boolean Indexing으로 대체 - 고정 크기 수치 데이터 처리 시 List 대신 NumPy Array 채택

원문 읽기