Hacker News 의견
  • Blender는 빠르고 손실 없는 파일 로딩 및 저장을 위해 디스크와 메모리에서 동일한 표현을 사용합니다.
  • 효율적인 인라인 마크업 파싱을 위해 pulldown-cmark에서 평탄화된 AST가 사용됩니다.
  • 평탄화된 AST 표현은 노드 수나 스택 깊이에 관계없이 O(1) 트리 변환을 가능하게 합니다.
  • pulldown-cmark의 성능은 다른 CommonMark 파서와 비교하여 탁월합니다.
  • Warren Abstract Machine (WAM)은 Prolog 용 평탄화된 표현을 힙에 사용합니다.
  • AST 평탄화는 Lisp와 같은 언어에서 이미 사용되고 있던 개념입니다.
  • 크기 조정 가능한 배열에 노드를 저장하는 것은 메모리 할당 문제를 야기할 수 있지만, 페이지 크기 블록에서 풀링함으로써 완화할 수 있습니다.
  • AST 노드가 코드에서 어떻게 표현되는지에 대해 주의가 필요하며, 불필요한 패딩을 피해야 합니다.
  • 포인터 대신 인덱스를 사용하면 더 작고 빠른 코드를 얻을 수 있습니다.
  • 특정 시나리오에서 유용한 사용자 정의 메모리 할당기를 사용하여 평탄화된 메모리를 구현할 수 있습니다.
  • 메모리 제약이 있는 환경에서 JavaScript 파서와 인터프리터를 구현하기 위해 간결한 AST 구조가 사용되었습니다.