2026-06-04
any가 작은 값에선 inline boxing이라 박싱 비용 ≈ 0이지만, dispatch 비용은 항상 있다
- 처음엔 "
any는 항상 힙 박싱이라 느리다"고 단순화했지만 틀린 일반화였다. - Existential container의 value buffer는 보통 3-word(24 byte). 그보다 작은 값(
Int,Double등)은 inline으로 buffer에 직접 담겨 힙 할당이 일어나지 않는다. - 그러나 메서드 호출 시 PWT(Protocol Witness Table)를 거치는 간접 호출 비용은 값 크기와 무관하게 항상 발생한다.
- 그래서 진짜 zero-cost가 되려면
any가 아니라<T: P>generic + specialization 조합이어야 한다.
관련 문서
·
Protocol Oriented Programming