Zum Inhalt springen

Performance

Wie schnell go-slides einen Foliensatz baut und wie viel Speicher es dafür braucht, gemessen gegen marp-cli auf demselben Rechner.

Die PPTX-Werte unten gelten für v0.5.0, die Werte für das Vektor-PDF für v0.4.0. Die erste Tabelle gilt für v0.3.0, die vorherige Version, die Folien nebenläufig rendert und ihre Schriften nur einmal parst (go-slides/slides#11).

go-slides und marp-cli 4.5.1 wurden als Subprozesse mit denselben Foliensätzen ausgeführt, auf einem Apple M4 Max (16 CPUs) mit einem Load Average über eine Minute unter 8, fünf abwechselnd ausgeführte Durchläufe nach einem Warm-up. Die Zeit ist der Median der Wanduhrzeit; der Speicher ist der Spitzenwert des gesamten Prozessbaums (marp-cli steuert einen Chrome, dessen Prozesse mitzählen).

FoliensatzAusgabego-slidesmarp-cliSpeicher go-slidesSpeicher marp-cli
100 FolienHTML36 ms315 ms47 MiB140 MiB
100 FolienPDF1,14 s1,88 s242 MiB1.509 MiB
100 FolienPNG, jede Folie0,97 s5,44 s225 MiB1.354 MiB
100 FolienPPTX3,39 s8,03 s530 MiB1.373 MiB
gaia, 20 FolienPDF283 ms1,57 s154 MiB1.315 MiB
Mathematik und Code, 20 FolienPNG, jede Folie250 ms2,32 s168 MiB1.286 MiB

Vektor-PDF

Ab v0.4.0 wird das PDF als Vektoren gezeichnet (siehe Kommandozeile). Gleicher Rechner, gleiche Methode, 2026-10-19:

Foliensatzgo-slidesmarp-cliv0.3.0Größe go-slidesGröße marp-cliGröße v0.3.0
100 Folien306 ms1.763 ms1.147 ms758 KiB837 KiB10,0 MiB
gaia, 20 Folien93 ms1.546 ms285 ms32 KiB66 KiB582 KiB
Mathematik und Code, 20 Folien140 ms1.643 ms294 ms124 KiB335 KiB638 KiB

Speicher für das PDF mit 100 Folien: 158 MiB gegenüber 1.512 MiB bei marp-cli; CPU-Zeit 0,9 s gegenüber 2,7 s.

Die Werte von v0.4.0 für das PDF mit 100 Folien wurden am 2026-10-19 um 21:29 gemessen, bei einem Load Average über eine Minute von 7,7, in drei Durchläufen: go-slides 306 ms, 758 KiB und 158 MiB; marp-cli 1.838 ms, 837 KiB und 1.512 MiB.

Editierbares PPTX

Seit v0.5.0 besteht das PPTX aus Textfeldern, Formen und Bildern (siehe Kommandozeile). Gemessen am 2026-10-19 um 22:51, bei einem Load Average über eine Minute von 7,1, in drei Durchläufen:

Foliensatzgo-slidesmarp-cliGröße go-slidesGröße marp-cliSpeicher go-slidesSpeicher marp-cli
100 Folien348 ms7.795 ms760 KiB7,2 MiB204 MiB1.370 MiB
gaia, 20 Folien112 ms4.608 ms893 KiB4,8 MiB
Mathematik und Code, 20 Folien207 ms2.780 ms842 KiB1,5 MiB

Für den Foliensatz mit 100 Folien brauchte v0.4.0 4,7 s, 4,8 MiB und 540 MiB. Das PPTX von marp-cli enthält Bilder. Den größten Teil der Größe eines editierbaren Foliensatzes machen die eingebetteten Schriften aus.

Warum es schnell ist

  • Kein Browser, der gestartet werden muss. marp-cli startet für jeden Export nach PDF, Bild und PPTX einen Chrome; go-slides rendert mit go-webengine im eigenen Prozess.
  • Folien werden parallel gerendert, standardmäßig vier gleichzeitig, und jedes Bild wird geschrieben, sobald es an der Reihe ist: Ein langer Foliensatz liegt nie als Bilder im Speicher.
  • Schriften werden nur einmal pro Prozess geparst, nicht einmal pro Folie.

Was es nicht gewinnt

  • PDF-Größe in v0.3.0. Jede Folie war ein Bild im PDF: 10 MiB gegenüber 837 KiB beim Foliensatz mit 100 Folien. Das Vektor-PDF oben ist kleiner als das von marp-cli.
  • CPU-Zeit bei großen Foliensätzen. Vier Worker verbrauchen mehr CPU, als die Wanduhrzeit zeigt: in v0.3.0 3,2 s gegenüber 2,7 s bei marp-cli für das PDF mit 100 Folien (0,9 s beim Vektor-PDF).
  • Der Speicher ist bei marp-cli eine Obergrenze: Die Prozesse von Chrome teilen sich Seiten, die die Summe in jedem davon mitzählt. Sein größter einzelner Prozess hat 220–320 MiB.

Die Methode, jeder Foliensatz und jeder Modus sowie die Befehle zum Reproduzieren der Werte stehen in BENCHMARKS.md.

Erstellt am von tannevaled

Geändert am von tannevaled