추상화와 최적화의 트레이드오프 (The Abstraction-Optimization Tradeoff)
Source
Evernote/Technote scraps/Vivek Haldar The abstraction-optimization tradeoff.md
Summary
컴퓨터 과학에서 추상화 수준이 높을수록 구조적 정보가 풍부하지만, 이를 저수준으로 변환하면 최적화에 필요한 정보가 손실된다. 저자는 자바 바이트코드 컴파일 과정과 OS의 IO 캐싱 예시를 통해, 추상화를 유지하면 최적화 성능이 높아지지만 포터빌리티와 결합도가 낮아지는 반면, 추상화를 낮추면 포터빌리티는 확보되지만 최적화 시 구조 복원 비용이 발생함을 설명한다.
Key Points
- 추상화-최적화 트레이드오프: 고수준 추상화는 최적화에 유리한 구조적 정보를 포함하지만, 저수준으로 변환 시 이 정보가 손실된다.
- 자바 바이트코드 예시: 자바 소스(고수준 구조)는 바이트코드(저수준, 평탄화)로 변환되며 구조가 손실된다. JVM은 실행 시 제어 흐름 그래프를 재구성하여 손실된 구조를 복원하려 시도하지만, 이는 최적화 비용이다.
- 포터빌리티 대 결합도: 바이트코드를 고수준으로 유지하면 최적화에 유리하지만 특정 언어와 결합도가 높아져 다른 언어와의 상호 운용성이 떨어진다. 저수준 바이트코드는 언어 독립성을 보장한다.
- OS IO 캐싱 예시: 애플리케이션은 데이터 접근 패턴에 대한 고수준 정보를 가지고 있으나, OS 커널은 이를 알지 못해 LRU 같은 일반화된 전략을 사용한다. fadvise 같은 힌팅 메커니즘은 이 정보 격차를 해소하려는 시도다.
- Exokernel: 추상화를 제거하고 하드웨어에 직접 접근하여 최적화를 극대화하는 접근법이지만, 추상화 장점이 사라지는 대가가 따른다.
Related
-
Supporting Flexible, Efficient, and User-Interpretable Retrieval of Similar Time Series
-
A Pure Visual Approach for Automatically Extracting and Aligning Structured Web Data
-
스트림 처리 최적화 카탈로그 (A catalog of stream processing optimizations)
-
Point Representation for Local Optimization: Towards Multi-Dimensional Gray Codes