본문으로 건너뛰기

성능

go-slides가 프레젠테이션을 얼마나 빠르게, 얼마만큼의 메모리로 빌드하는지 같은 컴퓨터에서 marp-cli와 비교해 측정했습니다.

아래 PPTX 수치는 v0.5.0, 벡터 PDF 수치는 v0.4.0 기준입니다. 첫 번째 표는 이전 릴리스인 v0.3.0 기준이며, 이 버전부터 슬라이드를 동시에 렌더링하고 글꼴을 한 번만 파싱합니다 (go-slides/slides#11).

go-slides와 marp-cli 4.5.1을 같은 프레젠테이션에 대해 하위 프로세스로 실행했습니다. Apple M4 Max(CPU 16개)에서 1분 평균 부하가 8 미만인 상태로, 예열 후 5회씩 번갈아 측정했습니다. 시간은 경과 시간(wall time)의 중앙값이고, 메모리는 전체 프로세스 트리의 최대값입니다 (marp-cli는 Chrome을 구동하므로 그 프로세스도 포함됩니다).

프레젠테이션출력go-slidesmarp-cligo-slides 메모리marp-cli 메모리
슬라이드 100장HTML36 ms315 ms47 MiB140 MiB
슬라이드 100장PDF1.14 s1.88 s242 MiB1,509 MiB
슬라이드 100장PNG, 전체 슬라이드0.97 s5.44 s225 MiB1,354 MiB
슬라이드 100장PPTX3.39 s8.03 s530 MiB1,373 MiB
gaia, 슬라이드 20장PDF283 ms1.57 s154 MiB1,315 MiB
수식과 코드, 슬라이드 20장PNG, 전체 슬라이드250 ms2.32 s168 MiB1,286 MiB

벡터 PDF

v0.4.0부터 PDF는 벡터로 그려집니다 (명령줄 참고). 같은 컴퓨터와 같은 방법으로 2026-10-19에 측정했습니다.

프레젠테이션go-slidesmarp-cliv0.3.0go-slides 크기marp-cli 크기v0.3.0 크기
슬라이드 100장306 ms1,763 ms1,147 ms758 KiB837 KiB10.0 MiB
gaia, 슬라이드 20장93 ms1,546 ms285 ms32 KiB66 KiB582 KiB
수식과 코드, 슬라이드 20장140 ms1,643 ms294 ms124 KiB335 KiB638 KiB

슬라이드 100장 PDF의 메모리는 158 MiB로, marp-cli의 1,512 MiB와 비교됩니다. CPU 시간은 0.9 s 대 2.7 s입니다.

슬라이드 100장 PDF의 v0.4.0 수치는 2026-10-19 21:29에 1분 평균 부하 7.7에서 3회 측정한 것입니다. go-slides는 306 ms, 758 KiB, 158 MiB였고 marp-cli는 1,838 ms, 837 KiB, 1,512 MiB였습니다.

편집 가능한 PPTX

v0.5.0부터 PPTX는 텍스트 상자, 도형, 그림으로 이루어집니다 (명령줄 참고). 2026-10-19 22:51에 1분 평균 부하 7.1에서 3회 측정했습니다.

프레젠테이션go-slidesmarp-cligo-slides 크기marp-cli 크기go-slides 메모리marp-cli 메모리
슬라이드 100장348 ms7,795 ms760 KiB7.2 MiB204 MiB1,370 MiB
gaia, 슬라이드 20장112 ms4,608 ms893 KiB4.8 MiB
수식과 코드, 슬라이드 20장207 ms2,780 ms842 KiB1.5 MiB

슬라이드 100장 프레젠테이션에서 v0.4.0은 4.7 s, 4.8 MiB, 540 MiB였습니다. marp-cli의 PPTX에는 그림이 들어 있습니다. 편집 가능한 프레젠테이션 크기의 대부분은 내장 글꼴입니다.

빠른 이유

  • 시작할 브라우저가 없습니다. marp-cli는 PDF, 이미지, PPTX를 내보낼 때마다 Chrome을 실행하지만, go-slides는 자체 프로세스 안에서 go-webengine으로 렌더링합니다.
  • 슬라이드를 병렬로 렌더링합니다. 기본값은 한 번에 네 장이며, 각 이미지는 차례가 오는 즉시 기록되므로 긴 프레젠테이션도 이미지 형태로 메모리에 쌓아 두지 않습니다.
  • 글꼴은 한 번만 파싱합니다. 슬라이드마다가 아니라 프로세스당 한 번입니다.

앞서지 못하는 부분

  • v0.3.0의 PDF 크기. PDF 안의 각 슬라이드가 이미지였기 때문에 슬라이드 100장 프레젠테이션에서 10 MiB로, marp-cli의 837 KiB보다 컸습니다. 위의 벡터 PDF는 marp-cli보다 작습니다.
  • 큰 프레젠테이션의 CPU 시간. 워커 네 개는 경과 시간이 보여 주는 것보다 더 많은 CPU를 씁니다. v0.3.0에서 슬라이드 100장 PDF는 3.2 s로, marp-cli의 2.7 s보다 많았습니다(벡터 PDF는 0.9 s).
  • marp-cli의 메모리는 상한값입니다. Chrome 프로세스들은 페이지를 공유하는데, 합계에서는 이를 프로세스마다 중복해 셉니다. 가장 큰 단일 프로세스는 220–320 MiB입니다.

측정 방법, 모든 프레젠테이션과 모드, 수치를 재현하는 명령은 BENCHMARKS.md에 있습니다.

Created on by tannevaled

Modified on by tannevaled