Pyrefly, Python 타입 검사 속도 18배 향상!
Pyrefly, Python 언어 서버 및 타입 체커의 성능 개선을 위해 노력
세분화된 종속성 추적(Fine-grained dependency tracking)과 스트리밍 진단(Streaming diagnostics) 기술을 통해 속도 향상
대규모 코드베이스에서 진단 업데이트 시간 18배 단축 (3.6초 → 200ms)
커뮤니티에서는 타입 검사 속도 향상에 대한 긍정적 반응과 함께 향후 기능 개선에 대한 기대 표명
세분화된 종속성 추적(Fine-grained dependency tracking) 기술
Pyrefly는 기존 모듈 단위의 종속성 추적에서 벗어나, 세분화된 종속성 추적(Fine-grained dependency tracking)을 도입하여 불필요한 모듈 재검사를 방지했다. 특히, 모듈 내에서 실제로 사용되는 타입(Type)을 정확하게 추적함으로써, 변경 사항이 없는 모듈의 재검사를 건너뛰도록 최적화했다. 이로 인해, 대규모 코드베이스에서 2000개 이상의 모듈 재검사가 100개 미만으로 줄어드는 효과를 보였다.
스트리밍 진단(Streaming diagnostics)을 통한 사용자 경험 개선
Pyrefly는 스트리밍 진단(Streaming diagnostics) 기술을 통해 사용자에게 즉각적인 피드백을 제공한다. 기존에는 모든 모듈의 재검사가 완료된 후에 진단을 업데이트했지만, 이제는 열려있는 파일의 재검사가 완료되는 즉시 진단을 IDE에 전송한다. 이러한 방식은 사용자가 코드를 수정하는 동안 지연 시간을 최소화하여, 더욱 부드러운 개발 환경을 제공한다. 멀티 스레딩(Multi-threading)을 활용하여 언어 서버의 응답성을 유지하는 것도 중요한 개선 사항이다.
성능 개선의 구체적인 결과 및 벤치마크
Pyrefly 팀은 세분화된 종속성 추적(Fine-grained dependency tracking)과 스트리밍 진단(Streaming diagnostics) 기술을 결합하여, 진단 업데이트 시간을 18배 단축하는 데 성공했다. 구체적으로, M4 Macbook Pro 환경에서 진단 업데이트 시간이 3.6초에서 200ms 미만으로 감소했다. 이러한 성능 개선은 개발자의 생산성을 향상시키고, 코드 작성 및 디버깅(Debugging) 과정을 더욱 효율적으로 만든다. 벤치마크 결과는 깃허브(GitHub)에서 확인할 수 있다.
향후 개선 방향 및 v1 릴리스 계획
Pyrefly 팀은 성능 개선과 더불어 메모리 효율성(Memory Efficiency), 버그 수정(Bug Fixes), 그리고 추론 능력 향상(Enhanced Inference Capabilities)에 집중할 계획이다. v1 릴리스를 앞두고, 성능과 기능의 균형을 맞추기 위해 노력하고 있다. 또한, 사용자들의 피드백을 적극적으로 수렴하여, 지속적인 개선을 이어갈 예정이다. 오픈 소스 프로젝트(Open Source Project)로서, 커뮤니티 기여를 장려하고 있다.