6P by samchon 2023-08-06 | favorite | 댓글과 토론
  • Typia가 TS runtime validator 중 가장 빠른 이유를 이론적으로 설명
  • JS와 같은 동적 언어는 모든 객체가 HashMap<string, Object>
    • 아무 키나 넣고 빼고 가능한 게 이 덕분
    • 대신 정적인 클래스 구조 대비 느림
    • HashMap은 내부적으로 원소들을 링크드 리스트에 저장하기 때문
  • V8 Engine은 Hidden Class Optimization 이라는 게 있음
    • 동적으로 제어하는 요소가 없다 싶으면 HashMap 사용 안 하고
    • 그 대신 정적인 클래스 구조로 변환하여 사용
    • 정적인 클래스는 멤버들이 메모리 상 연속되어 성능에 유리
  • Typia는 각 타입에 대한 검증 코드를 정적으로 생성 (AoT compilation)
  • 다른 runtime validator 들은 동적인 로직 사용 (for key in obj)
  • 이것이 Typia가 다른 runtime validator들보다 빠른 이유