Learning
토픽 122 / 122·비교표

코드 실행 체계 (Code Execution Model)

컴파일러 vs 인터프리터

항목컴파일러인터프리터
번역 방식전체 코드 사전 번역줄 단위 즉시 실행
실행 속도빠름느림 (10-100배)
오류 발견컴파일 시 (사전)실행 시 (런타임)
디버깅어려움대화형 (REPL)
적용C, C++, Rust, GoPython, Ruby, Bash

JIT vs AOT

항목JITAOT
컴파일 시점실행 중 (런타임)실행 전 (빌드 시)
시작 시간느림 (웜업 필요)빠름 (즉시 실행)
최적화동적 (프로파일 기반)정적 (컴파일 시)
메모리큼 (컴파일러 포함)작음 (네이티브 바이너리)
적용Java (HotSpot), JavaScript (V8)Go, Rust, GraalVM Native

스택 VM vs 레지스터 VM

항목스택 기반 VM레지스터 기반 VM
연산 방식스택에 push/pop가상 레지스터 사용
구현간단복잡
코드 크기작음 (0-주소)큼 (레지스터 지정)
실행 속도느림 (스택 오버헤드)빠름 (명령어 수 적음)
적용JVM, CLR, CPythonLua VM, Dalvik

WebAssembly vs JavaScript vs 컨테이너

항목WebAssemblyJavaScript컨테이너
포맷바이너리 (.wasm)텍스트 (스크립트)이미지 (OS+앱)
성능네이티브 근접JIT 최적화네이티브
언어다중 (C/Rust/Go)JS/TS모든 언어
크기작음중간
격리샌드박스브라우저 보안OS 수준 격리

힙 vs 스택 (메모리 영역)

항목스택
할당동적 (malloc/new)자동 (함수 호출 시)
해제수동 (free/GC)자동 (함수 반환 시)
성장 방향낮은→높은 주소높은→낮은 주소
속도느림빠름
크기큼 (GB 단위)작음 (MB 단위)
관리개발자/GC컴파일러