Pular para o conteúdo

Desempenho

Com que rapidez o go-slides constrói uma apresentação, em quanta memória, medido contra o marp-cli na mesma máquina.

Os números do PPTX abaixo são da v0.5.0 e os do PDF vetorial, da v0.4.0. A primeira tabela é da v0.3.0, a versão anterior, que renderiza os slides concorrentemente e analisa as suas fontes uma única vez (go-slides/slides#11).

O go-slides e o marp-cli 4.5.1 foram executados como subprocessos nas mesmas apresentações, em um Apple M4 Max (16 CPUs) com carga média de 1 minuto abaixo de 8, em cinco rodadas intercaladas após um aquecimento. O tempo é a mediana do tempo real; a memória é o pico de toda a árvore de processos (o marp-cli controla um Chrome, cujos processos contam).

ApresentaçãoSaídago-slidesmarp-climemória do go-slidesmemória do marp-cli
100 slidesHTML36 ms315 ms47 MiB140 MiB
100 slidesPDF1,14 s1,88 s242 MiB1.509 MiB
100 slidesPNG, todos os slides0,97 s5,44 s225 MiB1.354 MiB
100 slidesPPTX3,39 s8,03 s530 MiB1.373 MiB
gaia, 20 slidesPDF283 ms1,57 s154 MiB1.315 MiB
matemática e código, 20 slidesPNG, todos os slides250 ms2,32 s168 MiB1.286 MiB

PDF vetorial

Na v0.4.0, o PDF é desenhado como vetores (veja Linha de comando). Mesma máquina e mesmo método, 2026-10-19:

Apresentaçãogo-slidesmarp-cliv0.3.0tamanho do go-slidestamanho do marp-clitamanho da v0.3.0
100 slides306 ms1.763 ms1.147 ms758 KiB837 KiB10,0 MiB
gaia, 20 slides93 ms1.546 ms285 ms32 KiB66 KiB582 KiB
matemática e código, 20 slides140 ms1.643 ms294 ms124 KiB335 KiB638 KiB

Memória do PDF de 100 slides: 158 MiB, contra 1.512 MiB do marp-cli; tempo de CPU de 0,9 s contra 2,7 s.

Os números da v0.4.0 para o PDF de 100 slides foram medidos em 2026-10-19 às 21:29, com carga média de 1 minuto de 7,7, em três rodadas: go-slides 306 ms, 758 KiB e 158 MiB; marp-cli 1.838 ms, 837 KiB e 1.512 MiB.

PPTX editável

Desde a v0.5.0, o PPTX é feito de caixas de texto, formas e imagens (veja Linha de comando). Medido em 2026-10-19 às 22:51, com carga média de 1 minuto de 7,1, em três rodadas:

Apresentaçãogo-slidesmarp-clitamanho do go-slidestamanho do marp-climemória do go-slidesmemória do marp-cli
100 slides348 ms7.795 ms760 KiB7,2 MiB204 MiB1.370 MiB
gaia, 20 slides112 ms4.608 ms893 KiB4,8 MiB
matemática e código, 20 slides207 ms2.780 ms842 KiB1,5 MiB

Para a apresentação de 100 slides, a v0.4.0 levou 4,7 s, 4,8 MiB e 540 MiB. O PPTX do marp-cli contém imagens. A maior parte do tamanho de uma apresentação editável são as fontes incorporadas.

Por que é rápido

  • Nenhum navegador para iniciar. O marp-cli inicia um Chrome para cada exportação de PDF, imagem e PPTX; o go-slides renderiza com o go-webengine dentro do próprio processo.
  • Os slides são renderizados em paralelo, quatro por vez por padrão, e cada imagem é escrita assim que chega a sua vez: uma apresentação longa nunca é mantida na memória como imagens.
  • As fontes são analisadas uma vez por processo, não uma vez por slide.

Onde ele não vence

  • Tamanho do PDF, na v0.3.0. Cada slide era uma imagem no PDF: 10 MiB contra 837 KiB para a apresentação de 100 slides. O PDF vetorial acima é menor que o do marp-cli.
  • Tempo de CPU em apresentações grandes. Quatro workers gastam mais CPU do que o tempo real mostra: na v0.3.0, 3,2 s contra 2,7 s do marp-cli para o PDF de 100 slides (0,9 s para o PDF vetorial).
  • A memória é um limite superior para o marp-cli: os processos do Chrome compartilham páginas que a soma conta em cada um. Seu maior processo individual tem 220–320 MiB.

O método, cada apresentação e modo, e os comandos para reproduzir os números estão em BENCHMARKS.md.

Created on by tannevaled

Modified on by tannevaled