benchmark · reines TypeScript · selbst ausführen

Wie schnell ist jasy? Hier ist alles, was wir gemessen haben.

Sechs Dokumente, vier Engines, jeder Vergleich mit demselben Text auf denselben Seiten. jasy ist eine PDF-Engine in reinem TypeScript - kein Headless-Browser, kein WASM, keine JVM - und damit rendern @jasy/vue, @jasy/react, @jasy/angular und @jasy/nuxt.

  • jasysetzt selbst

    Flexbox-Layout, in reinem TypeScript.

    Setzt das Dokument selbst - Zeilenumbrüche, Seitenumbrüche, Kerning, SVG. Kein Headless-Browser, kein WASM, keine JVM.

  • react-pdfsetzt selbst

    Flexbox-Layout, als React-Komponenten.

    Dieselbe Aufgabe über Yoga und einen React-Baum. Der engste Vergleich auf dieser Seite.

  • pdfmakesetzt selbst

    Deklaratives Layout, ein Dokumentobjekt.

    Setzt ebenfalls selbst, mit eigenem Spalten- und Tabellenmodell. Kernt und nimmt SVG-Markup direkt.

  • jsPDFSie setzen

    Eine Zeichen-API. Kein Layout.

    Sie berechnen jede Koordinate und jeden Seitenumbruch. Darum ist es hier schnell, und darum sind zwei Fälle leer.

3,6x
schneller als react-pdf
2,4x
schneller als pdfmake
12 / 12
nie dahinter

Beide Zahlen sind geometrische Mittel, der korrekte Durchschnitt von Verhältnissen. jsPDF steckt nicht darin - es zeichnet, wo diese setzen, und ein Durchschnitt über beides hieße nichts. Sein Vergleich hat unten einen eigenen Abschnitt, Niederlagen eingeschlossen.

gemessen
8. November 2026 um 22:34 UTC
Versionen
@jasy/pdf 1.0.0-beta.5
@react-pdf/renderer 4.9.0
pdfmake 0.3.11
jspdf 4.2.1
Rechner
13th Gen Intel(R) Core(TM) i5-13400 x16
Methode
Median aus 25 Läufen, Node v24.22.2

Die sechs Dokumente

Die Balken sind innerhalb eines Falls maßstabsgetreu, gemessen an seiner langsamsten Engine. Jedes Paar wurde auf dieselben Wörter auf denselben Seiten geprüft, bevor ein Verhältnis erschien.

boxes

360 abgerundete, umrandete, gefüllte Boxen

jasy
14,8 ms
react-pdf
73,5 ms
pdfmake
14,0 ms
jsPDF
9,9 ms

alle 2 Seiten · p95 20,9 ms

canvas

40 Diagramme mit je 24 Balken, mit dem imperativen Pen gezeichnet

jasy
4,0 ms
react-pdf
5,7 ms
pdfmake
3,6 ms
jsPDF
3,2 ms

alle 4 Seiten · p95 4,7 ms

document

ein Bericht: wiederholter Header und Footer, 24 Absätze, 90 Tabellenzeilen

jasy
11,7 ms
react-pdf
90,6 ms
pdfmake
27,3 ms
jsPDF
5,5 ms

alle 4 Seiten · p95 17,5 ms

svg

120 Vektorformen - Pfade, Konturen, Linienverbindungen

jasy
7,5 ms
react-pdf
11,6 ms
pdfmake
36,3 ms
jsPDF
kann das nicht rendern - keine SVG-Unterstützung (das ist svg2pdf.js, eine eigene Bibliothek)

1 Seite · p95 8,4 ms

text

180 fließende Absätze - Zeilen- und Seitenumbruch

jasy
17,2 ms
react-pdf
103,8 ms
pdfmake
109,3 ms
jsPDF
19,4 ms

alle 13 Seiten · p95 18,7 ms

typography

120 Absätze in einer eingebetteten TrueType-Schrift - echtes Kerning und Ligaturen

jasy
17,9 ms
react-pdf
83,1 ms
pdfmake
52,3 ms
jsPDF
kann das nicht rendern - kein Kerning, daher landen dieselben Wörter nicht an denselben Stellen

alle 7 Seiten · p95 20,0 ms

wo jasy hinten liegt

jsPDF ist 1,4x schneller als jasy.

Es zeichnet, wo die anderen setzen, und Zeichnen ist billiger. Auf keiner Seite ist das ein Mangel - das Layout machen eben Sie. Im Bericht-Fall sind das 73 Zeilen jsPDF gegen 41 Zeilen jasy: jede y-Koordinate, jeder Page Break und der Header, neu gezeichnet nach jeder neuen Seite. Beides steht auf dieser Seite; lesen Sie es, statt der Zählung zu glauben.

Das ist der ganze Tausch. Über die 4 Dokumente, die beide erzeugen - 23 Seiten -, zahlen Sie zusammen rund 10 Millisekunden und schreiben diese Schleife nicht mehr. 2 der 6 Dokumente kann es gar nicht erzeugen - der SVG-Fall braucht eine zweite Bibliothek, und es kernt nie, also landen dieselben Wörter nicht an denselben Stellen.

was das ehrlich hält

Ein Benchmark vom Autor einer der Engines ist nichts wert, bis er zeigt, was er getan hat, um sich selbst zu ertappen.

Deshalb steht hier jede Regel, die dieses Messwerkzeug durchsetzt - auch die zwei, die uns die Zahlen gekostet haben, die wir lieber zeigen würden. Sie bleiben drin.

  1. 01

    Jede Engine zeichnet dasselbe Dokument

    hat uns zweimal ertappt

    Gleiche Wörter, gleiche Anzahl, gleiche Seiten - geprüft, bevor ein Verhältnis erscheint, sonst verweigert der Runner die Ausgabe. Das hat sich zweimal bezahlt gemacht, beide Male bei unseren eigenen Fehlern: ein Fall gab react-pdf eine Zelle, die für ihre Zeile zu kurz war, sodass es gar keine Beschriftungen zeichnete, während die Seitenzahl noch stimmte; und ein Kopfabstand, den wir nur auf einer Seite gesetzt hatten, schob einen ganzen Textkörper 8 pt tiefer.

  2. 02

    Jeder Absatz ist anders

    hat uns 39 Punkte gekostet

    Ein Benchmark, der einen String wiederholt, misst Caching, nicht Layout. Unserer tat das, und die Wiederholung half react-pdf weit mehr als uns - auf demselben Rechner am selben Tag lag der Fließtext-Fall mit einem wiederholten Absatz 45 % zu seinen Gunsten und mit 180 verschiedenen bei 6 %. Echte Dokumente haben keine identischen Absätze, diese also auch nicht.

  3. 03

    Die Einstellungen werden umgerechnet, nicht angenommen

    die mühsame

    Dasselbe Wort bedeutet in jeder etwas anderes: eine Zeilenhöhe multipliziert in jasy die Schriftgröße, in pdfmake die natürliche Höhe der Schrift, und in react-pdf wird sie in verschachtelten Text gar nicht vererbt. Nichts davon ist ein Fehler - es muss nur umgerechnet werden, sonst brechen die Dokumente an verschiedenen Stellen um. Jede Umrechnung steht im Fall, mit dem Grund daneben.

  4. 04

    Wir schalten unsere eigenen Features ab

    unser Handicap

    jasy hält an einem Seitenumbruch zwei Zeilen eines Absatzes zusammen; jsPDF hat keine solche Regel. Also ist sie im Bericht-Fall abgeschaltet, bei uns und bei react-pdf. Erst das Handicap macht es zum selben Dokument.

Selbst ausführen

Das Messwerkzeug, die sechs Dokumente und das rohe JSON hinter dieser Seite liegen im Repository. Es pinnt die Versionen, gegen die es vergleicht, und nennt den Rechner, auf dem es lief.

git clone https://github.com/jasy-pdf/jasy
cd jasy/bench
pnpm install
pnpm bench

Ihr Dokument ist nicht unter den sechs? Das ist der faire Einwand gegen jeden Benchmark, und die Antwort ist ein Pull Request - ein Fall ist eine Datei mit einer Funktion pro Engine.

Ein Rechner, ein Tag, sechs Dokumente. Ihre Zahlen werden abweichen - genau deshalb veröffentlichen wir das Messwerkzeug und nicht nur das Ergebnis.

Mehr als Tempo: jasy und react-pdf, gemessen →