Rust로 구현된 mmdr, Mermaid 다이어그램 렌더링 속도 1000배 향상!

by DD
5개월 전
조회수 62

Mermaid 다이어그램 렌더링 속도를 획기적으로 개선한 mmdr이 등장

Rust로 구현되어 브라우저 종속성을 제거하고, 1000배 빠른 성능을 달성

CI/CD 파이프라인 및 실시간 편집기(Real-time editor)에서 획기적인 성능 향상을 보임

커뮤니티에서는 기존 mermaid-cli의 느린 속도 문제를 해결할 대안으로 주목

mmdr의 핵심 기술: 브라우저 종속성 제거

mmdr은 기존 mermaid-cli가 사용하는 Chromium(크로미움) 기반 렌더링 방식을 탈피하여, 순수 Rust로 구현된 네이티브 바이너리(Native Binary)를 사용한다. 기술적으로 보면, mmdr은 Mermaid 구문을 Rust로 직접 파싱(Parsing)하고, SVG로 렌더링하는 파이프라인을 구축했다. 이러한 아키텍처(Architecture)는 브라우저 시작에 따른 오버헤드(Overhead)를 제거하여, 렌더링 속도를 획기적으로 개선했다.

성능 비교: mmdr vs mermaid-cli

mmdr은 다양한 다이어그램 유형에 대해 mermaid-cli보다 월등한 성능을 보여준다. 벤치마크(Benchmark) 결과에 따르면, mmdr은 플로우차트(Flowchart) 렌더링에서 최대 958배, 클래스 다이어그램(Class Diagram)에서 746배, 시퀀스 다이어그램(Sequence Diagram)에서 990배 더 빠른 속도를 기록했다. 특히, CI/CD 파이프라인(CI/CD Pipeline)과 같이 다수의 다이어그램을 처리해야 하는 환경에서 mmdr의 성능 이점(Performance Benefit)이 극대화된다.

mmdr의 활용 사례 및 개발 편의성

mmdr은 CI/CD 파이프라인(CI/CD Pipeline)에서 다이어그램 생성 시간을 수 초에서 수 밀리초(ms)로 단축시켜 개발 생산성을 향상시킨다. 또한, mmdr은 Rust 라이브러리로도 사용 가능하여, 애플리케이션(Application)에 직접 통합할 수 있다. mmdr은 다양한 다이어그램 유형(Diagram Types)을 지원하며, 사용자 정의(Customization)를 위한 설정 옵션(Configuration Options)을 제공하여 유연성을 높였다.

커뮤니티 반응 및 잠재적 영향

커뮤니티에서는 mmdr의 빠른 렌더링 속도와 브라우저 종속성 제거에 대해 긍정적인 반응을 보이고 있다. 특히, 기존 mermaid-cli의 느린 속도로 인해 불편함을 겪었던 사용자들에게 mmdr은 매력적인 대안으로 인식되고 있다. aaronsb는 터미널 마크다운(Terminal Markdown) 렌더러 클라이언트에 mmdr을 적용해보고 싶다는 의견을 제시했다. mmdr은 다이어그램 렌더링 분야에서 새로운 표준을 제시할 가능성이 있다.

I made a Mermaid diagram renderer that's 1000x faster by not spawning Chrome for every render