コンテンツにスキップ

パフォーマンス

go-slides がスライドデッキをどれだけ速く、どれだけのメモリでビルドするか。同じマシン上で marp-cli と比較して計測しました。

以下の PPTX の数値は v0.5.0、ベクター PDF の数値は v0.4.0 のものです。 最初の表は v0.3.0(その前のリリース)のものです。v0.3.0 はスライドを並行してレンダリングし、 フォントの解析を 1 回だけ行います(go-slides/slides#11)。

go-slides と marp-cli 4.5.1 を、 同じスライドデッキに対してサブプロセスとして実行しました。マシンは Apple M4 Max(16 CPU)、 1 分間のロードアベレージは 8 未満で、ウォームアップの後に交互に 5 ラウンド計測しています。 時間は実時間の中央値、メモリはプロセスツリー全体のピークです (marp-cli は Chrome を操作するため、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 を使って自身の プロセス内でレンダリングします。
  • スライドは並列にレンダリングされます。 デフォルトでは 4 枚ずつで、各画像は 順番が来しだい書き出されます。そのため、長いスライドデッキが画像としてメモリに保持され続けることはありません。
  • フォントの解析はプロセスごとに 1 回 だけで、スライドごとには行いません。

優位でない点

  • v0.3.0 での PDF のサイズ。 PDF の各スライドが画像だったため、100 枚のスライドデッキでは 10 MiB 対 837 KiB でした。上記のベクター PDF は marp-cli のものより小さくなっています。
  • 大きなスライドデッキでの CPU 時間。 4 つのワーカーは、実時間から見えるより多くの 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