Elm 0.19.2, 빌드 속도 개선

2 weeks ago 8
  • Elm 0.19.2는 Elm 1.0으로 가기 전 여러 소규모 릴리스로 컴파일러 개선을 반영하려는 흐름의 첫 단계임
  • 대규모 Elm 코드베이스에서 처음부터 컴파일은 5.7초, 이후 증분 빌드는 350ms 미만으로 측정돼 개발 중 집중 흐름을 끊을 가능성이 줄어듦
  • 이번 개선은 파싱 중 할당을 줄이는 데 집중됐고, 85만 줄 실험에서 GC 복사량 20% 감소, 최대 메모리 사용량 10% 감소, 전체 속도 7% 향상이 관찰됨
  • 실제 프로젝트 테스트에서는 개선 폭이 다양했으며, 351개 모듈을 처음부터 컴파일하는 사례는 4.981초에서 2.595초로 줄어 1.9배 빨라짐
  • Acadia 작업에서 나온 성능·언어 아이디어가 앞으로 호환성을 깨지 않는 릴리스로 순차 반영되고, 마지막 손질 후 Elm 1.0으로 이어질 계획임

Elm 0.19.2에서 빨라진 컴파일

  • Elm 0.19.2는 누적된 컴파일러 개선을 Elm에 작은 단위로 반영하는 첫 릴리스임
  • 빠른 컴파일러는 개발자가 브라우저 탭으로 전환하며 집중을 잃는 상황을 줄여줌
    • 증분 컴파일이 400ms 미만이면 다른 작업으로 넘어갈 틈이 거의 없어짐
  • 85만 줄 Elm 코드 기준 성능은 다음과 같음
    • 처음부터 컴파일: 5.7초
    • 증분 빌드: 350ms 미만
  • 실제 변경은 파싱 중 할당을 줄이는 작업에 집중됨
    • GC 복사량 20% 감소
    • 최대 메모리 사용량 10% 감소
    • 전체 속도 7% 향상
  • 50만 줄을 넘는 프로그램에서는 완만한 개선을 기대할 수 있고, 더 작은 프로그램에서는 Elm 컴파일러가 여전히 매우 빠른 편임
  • 실제 환경 테스트에서는 개선 폭이 프로젝트마다 달랐음
    • 일부 프로젝트는 소폭 개선됨
    • 351개 모듈을 처음부터 컴파일하는 경우 4.981초에서 2.595초로 줄어 1.9배 개선
  • 새 버전은 Elm compiler 0.19.2 릴리스에서 받을 수 있음

Elm 1.0으로 가는 다음 릴리스들

  • Acadia라는 데이터베이스 관련 컴파일러 작업에서 얻은 아이디어가 Elm에도 활용될 예정임
    • Acadia는 현재 비공개 알파 상태임
    • 공개 공유는 올해 말로 예정돼 있음
  • Elm에 반영할 아이디어는 성능 개선과 언어 기능을 모두 포함함
    • 예: 더 빠른 파서
    • 예: equatable, hashable 타입
  • 이런 변화는 Elm에 자연스럽게 통합하기 위해 호환성을 깨지 않는 작은 릴리스 시리즈로 반영될 예정임
  • 마지막 손질 단계에서 Elm 1.0으로 넘어갈 계획임
  • Elm을 처음 접하는 사용자는 온라인 예제가이드로 시작할 수 있음
  • Elm 0.19.2는 패치 릴리스라 기존 프로젝트에서도 새 버전을 내려받아 바로 사용할 수 있음
Read Entire Article