2025-09-17 12:39
Tags: 소프트웨어 공학
오버헤드
- 특정 작업을 처리할 때 직접적인 처리 시간 외에 추가로 소요되는 자원이나 시간
- 더 높은 추상화, 안정성, 보안 등을 위해 발생하는 필연적인 비용이며, CPU, 메모리, 네트워크 등 다양한 형태
- 더 나은 개발 환경, 더 안정적인 시스템, 더 강력한 기능을 위한 트레이드 오프]의 산물
종류 | 정의 | 주요 발생 원인 | 대표적인 예시 |
---|---|---|---|
CPU 오버헤드 | 실제 연산 외에 추가로 소요되는 CPU 사이클 | 함수 호출, 문맥 교환, 예외 처리, 가상화 | 재귀 함수의 깊은 호출, 스레드 간 잦은 문맥 교환 |
메모리 오버헤드 | 순수 데이터 외에 추가로 필요한 메모리 공간 | 데이터 구조 메타데이터, 메모리 정렬, 단편화 | 연결 리스트의 다음 노드를 가리키는 포인터, 객체 헤더 |
네트워크 오버헤드 | 전송할 데이터(Payload) 외에 추가되는 프로토콜 정보 | 프로토콜 헤더(TCP/IP, HTTP), 핸드셰이크, 암호화 | TCP 헤더(20바이트), TLS 암호화 과정 |
스토리지 오버헤드 | 파일 데이터 외에 파일을 관리하기 위해 필요한 디스크 공간 | 파일 시스템 메타데이터, 저널링, 인덱스 | 파일명, 생성일, 권한 정보, 데이터베이스 인덱스 |
런타임 오버헤드 | 특정 프로그래밍 언어나 런타임 환경으로 인해 발생하는 비용 | 동적 타입 검사, 가비지 컬렉션], JIT 컴파일 | 파이썬의 타입 추론, 자바의 GC 작동 |