Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified assets/readme/examples/engine-deck-v2.pdf
Binary file not shown.
Binary file modified assets/readme/examples/engine-deck.pdf
Binary file not shown.
139 changes: 87 additions & 52 deletions baselines/current-speed-full.json
Original file line number Diff line number Diff line change
@@ -1,98 +1,133 @@
{
"timestamp" : "2026-06-09 17:19:39",
"timestamp" : "2026-07-26 22:59:52",
"profile" : "full",
"warmupIterations" : 12,
"measurementIterations" : 40,
"docsPerThread" : 12,
"threadCounts" : [ 1, 2, 4, 8 ],
"threadCounts" : [ 1, 2, 4, 8, 16 ],
"latency" : [ {
"scenario" : "cv-template",
"description" : "Compose-first CV template",
"avgMillis" : 2.45,
"p50Millis" : 2.24,
"p95Millis" : 3.53,
"maxMillis" : 4.27,
"docsPerSecond" : 408.15,
"avgKilobytes" : 2.22,
"peakHeapMb" : 20.0
"avgMillis" : 4.81,
"p50Millis" : 4.52,
"p95Millis" : 7.09,
"maxMillis" : 7.56,
"docsPerSecond" : 208.05,
"avgKilobytes" : 2.46,
"peakHeapMb" : 27.48
}, {
"scenario" : "engine-simple",
"description" : "One-page engine composition",
"avgMillis" : 2.0,
"p50Millis" : 1.8,
"p95Millis" : 2.88,
"maxMillis" : 3.97,
"docsPerSecond" : 498.91,
"avgMillis" : 3.36,
"p50Millis" : 3.08,
"p95Millis" : 5.12,
"maxMillis" : 6.84,
"docsPerSecond" : 297.83,
"avgKilobytes" : 1.08,
"peakHeapMb" : 8.0
"peakHeapMb" : 10.0
}, {
"scenario" : "feature-rich",
"description" : "QR, barcode, watermark, header/footer, page break",
"avgMillis" : 31.99,
"p50Millis" : 31.32,
"p95Millis" : 36.35,
"maxMillis" : 40.65,
"docsPerSecond" : 31.26,
"avgMillis" : 54.16,
"p50Millis" : 52.0,
"p95Millis" : 62.22,
"maxMillis" : 83.58,
"docsPerSecond" : 18.47,
"avgKilobytes" : 6.33,
"peakHeapMb" : 58.89
"peakHeapMb" : 171.2
}, {
"scenario" : "invoice-template",
"description" : "Compose-first invoice template",
"avgMillis" : 13.12,
"p50Millis" : 12.88,
"p95Millis" : 17.01,
"maxMillis" : 19.6,
"docsPerSecond" : 76.22,
"avgKilobytes" : 9.72,
"peakHeapMb" : 45.11
"avgMillis" : 6.58,
"p50Millis" : 6.41,
"p95Millis" : 9.82,
"maxMillis" : 10.97,
"docsPerSecond" : 152.08,
"avgKilobytes" : 3.03,
"peakHeapMb" : 19.42
}, {
"scenario" : "long-token",
"description" : "Long unbreakable tokens (URLs/IDs) forcing character-level wrap",
"avgMillis" : 3.38,
"p50Millis" : 3.15,
"p95Millis" : 4.72,
"maxMillis" : 5.51,
"docsPerSecond" : 295.43,
"avgKilobytes" : 3.97,
"peakHeapMb" : 52.0
"avgMillis" : 5.6,
"p50Millis" : 5.28,
"p95Millis" : 7.6,
"maxMillis" : 8.37,
"docsPerSecond" : 178.56,
"avgKilobytes" : 4.08,
"peakHeapMb" : 56.0
}, {
"scenario" : "proposal-template",
"description" : "Long multi-page proposal template",
"avgMillis" : 9.63,
"p50Millis" : 9.24,
"p95Millis" : 12.44,
"maxMillis" : 13.24,
"docsPerSecond" : 103.84,
"avgKilobytes" : 7.68,
"peakHeapMb" : 51.99
"avgMillis" : 6.53,
"p50Millis" : 6.21,
"p95Millis" : 7.92,
"maxMillis" : 10.34,
"docsPerSecond" : 153.19,
"avgKilobytes" : 5.27,
"peakHeapMb" : 31.25
}, {
"scenario" : "vector-rich",
"description" : "v1.8 vector surface: bar + pie charts, SVG icons, gradient path",
"avgMillis" : 5.46,
"p50Millis" : 5.15,
"p95Millis" : 7.89,
"maxMillis" : 9.21,
"docsPerSecond" : 183.23,
"avgKilobytes" : 7.27,
"peakHeapMb" : 33.43
} ],
"stages" : [ {
"scenario" : "cv-template",
"composeMillis" : 0.45,
"layoutMillis" : 1.02,
"renderMillis" : 1.27,
"totalMillis" : 2.8
}, {
"scenario" : "invoice-template",
"composeMillis" : 0.27,
"layoutMillis" : 1.02,
"renderMillis" : 1.55,
"totalMillis" : 2.9
}, {
"scenario" : "proposal-template",
"composeMillis" : 0.34,
"layoutMillis" : 2.5,
"renderMillis" : 2.47,
"totalMillis" : 5.3
} ],
"throughput" : [ {
"scenario" : "invoice-template",
"threads" : 1,
"totalDocs" : 12,
"docsPerSecond" : 121.21,
"avgMillisPerDoc" : 8.25
"docsPerSecond" : 283.9,
"avgMillisPerDoc" : 3.52
}, {
"scenario" : "invoice-template",
"threads" : 16,
"totalDocs" : 192,
"docsPerSecond" : 1693.47,
"avgMillisPerDoc" : 0.59
}, {
"scenario" : "invoice-template",
"threads" : 2,
"totalDocs" : 24,
"docsPerSecond" : 223.67,
"avgMillisPerDoc" : 4.47
"docsPerSecond" : 630.89,
"avgMillisPerDoc" : 1.59
}, {
"scenario" : "invoice-template",
"threads" : 4,
"totalDocs" : 48,
"docsPerSecond" : 335.65,
"avgMillisPerDoc" : 2.98
"docsPerSecond" : 1148.54,
"avgMillisPerDoc" : 0.87
}, {
"scenario" : "invoice-template",
"threads" : 8,
"totalDocs" : 96,
"docsPerSecond" : 414.73,
"avgMillisPerDoc" : 2.41
"docsPerSecond" : 1596.51,
"avgMillisPerDoc" : 0.63
} ],
"totalBytes" : 3062560,
"totalBytes" : 2361736,
"aggregation" : "median",
"sourceCount" : 5,
"sourceRuns" : [ "C:\\Dev\\Java\\GraphCompose\\target\\benchmarks\\current-speed\\run-20260609-171909.json", "C:\\Dev\\Java\\GraphCompose\\target\\benchmarks\\current-speed\\run-20260609-171916.json", "C:\\Dev\\Java\\GraphCompose\\target\\benchmarks\\current-speed\\run-20260609-171924.json", "C:\\Dev\\Java\\GraphCompose\\target\\benchmarks\\current-speed\\run-20260609-171931.json", "C:\\Dev\\Java\\GraphCompose\\target\\benchmarks\\current-speed\\run-20260609-171938.json" ]
"sourceRuns" : [ "target\\benchmarks\\current-speed\\run-20260726-225913.json", "target\\benchmarks\\current-speed\\run-20260726-225923.json", "target\\benchmarks\\current-speed\\run-20260726-225932.json", "target\\benchmarks\\current-speed\\run-20260726-225942.json", "target\\benchmarks\\current-speed\\run-20260726-225950.json" ]
}
Original file line number Diff line number Diff line change
Expand Up @@ -702,9 +702,9 @@ private static void referencePage(SectionBuilder page, EngineDeckData.BenchRun b
});

page.addParagraph(p -> p
.text("Scope: one developer machine; CPU, OS, JDK and commit were not stored in this historical file. "
+ "The JSON stores 50/100 only for its small-invoice tier and omits scaling iteration metadata. "
+ "Refresh both data and provenance on the final 2.0 commit before release claims.")
.text("Scope: one developer machine, single run. The file records neither CPU, OS and JDK nor the "
+ "commit measured, and its iteration counts cover only the small-invoice tier. Absolute "
+ "milliseconds therefore travel badly between machines - read the ratios, not the timings.")
.textStyle(body(7.9, MUTED))
.lineSpacing(1.25)
.margin(DocumentInsets.top(1)));
Expand Down Expand Up @@ -744,9 +744,9 @@ private static void scalingPage(SectionBuilder page, EngineDeckData.BenchRun ben
});
page.addParagraph(p -> p
.rich(r -> r
.plain("What 2.0 can claim today: ")
.plain("What the 2.x line can claim today: ")
.bold("modular packaging, renderer isolation and deterministic layout snapshots")
.plain(". Refresh performance evidence separately on the release commit."))
.plain(". The figures above are one machine's reference run, refreshed with the data file."))
.textStyle(body(8.4, BODY))
.lineSpacing(1.3)
.margin(DocumentInsets.zero()));
Expand Down
48 changes: 24 additions & 24 deletions examples/src/main/resources/benchmarks/comparative.json
Original file line number Diff line number Diff line change
@@ -1,54 +1,54 @@
{
"timestamp" : "2026-06-15 19:41:29",
"timestamp" : "2026-07-26 23:00:56",
"warmupIterations" : 50,
"measurementIterations" : 100,
"libraries" : [ {
"library" : "GraphCompose Canonical",
"avgTimeMs" : 2.34,
"avgHeapMb" : 0.16
"avgTimeMs" : 2.84,
"avgHeapMb" : 0.17
}, {
"library" : "iText 9",
"avgTimeMs" : 2.48,
"avgTimeMs" : 2.75,
"avgHeapMb" : 0.16
}, {
"library" : "JasperReports",
"avgTimeMs" : 4.6,
"avgHeapMb" : 0.15
"avgTimeMs" : 5.7,
"avgHeapMb" : 0.16
}, {
"library" : "GraphCompose (40 rows)",
"avgTimeMs" : 4.52,
"avgHeapMb" : 0.84
"avgTimeMs" : 5.7,
"avgHeapMb" : 0.99
}, {
"library" : "iText 9 (40 rows)",
"avgTimeMs" : 12.87,
"avgHeapMb" : 2.96
"avgTimeMs" : 14.54,
"avgHeapMb" : 3.05
}, {
"library" : "JasperReports (40 rows)",
"avgTimeMs" : 9.13,
"avgHeapMb" : 2.52
"avgTimeMs" : 9.89,
"avgHeapMb" : 2.53
}, {
"library" : "GraphCompose (200 rows)",
"avgTimeMs" : 11.75,
"avgHeapMb" : 3.22
"avgTimeMs" : 15.26,
"avgHeapMb" : 3.93
}, {
"library" : "iText 9 (200 rows)",
"avgTimeMs" : 50.34,
"avgHeapMb" : 13.37
"avgTimeMs" : 57.57,
"avgHeapMb" : 13.81
}, {
"library" : "JasperReports (200 rows)",
"avgTimeMs" : 16.45,
"avgHeapMb" : 10.7
"avgTimeMs" : 21.13,
"avgHeapMb" : 10.81
}, {
"library" : "GraphCompose (1000 rows)",
"avgTimeMs" : 45.27,
"avgHeapMb" : 15.73
"avgTimeMs" : 64.08,
"avgHeapMb" : 19.16
}, {
"library" : "iText 9 (1000 rows)",
"avgTimeMs" : 243.66,
"avgHeapMb" : 65.95
"avgTimeMs" : 291.03,
"avgHeapMb" : 68.16
}, {
"library" : "JasperReports (1000 rows)",
"avgTimeMs" : 48.47,
"avgHeapMb" : 51.95
"avgTimeMs" : 64.77,
"avgHeapMb" : 52.53
} ]
}
Original file line number Diff line number Diff line change
Expand Up @@ -7645,11 +7645,11 @@
"computedY" : 94.309,
"placementX" : 42.0,
"placementY" : 94.309,
"placementWidth" : 860.144,
"placementWidth" : 871.986,
"placementHeight" : 15.865,
"startPage" : 3,
"endPage" : 3,
"contentWidth" : 860.144,
"contentWidth" : 871.986,
"contentHeight" : 15.865,
"margin" : {
"top" : 1.0,
Expand Down Expand Up @@ -7732,15 +7732,15 @@
"depth" : 2,
"layer" : 2,
"computedX" : 42.0,
"computedY" : 120.635,
"computedY" : 111.565,
"placementX" : 42.0,
"placementY" : 120.635,
"placementY" : 111.565,
"placementWidth" : 876.0,
"placementHeight" : 373.365,
"placementHeight" : 382.435,
"startPage" : 4,
"endPage" : 4,
"contentWidth" : 876.0,
"contentHeight" : 373.365,
"contentHeight" : 382.435,
"margin" : {
"top" : 0.0,
"right" : 0.0,
Expand Down Expand Up @@ -8362,15 +8362,15 @@
"depth" : 3,
"layer" : 3,
"computedX" : 42.0,
"computedY" : 136.757,
"computedY" : 127.687,
"placementX" : 42.0,
"placementY" : 136.757,
"placementWidth" : 840.126,
"placementHeight" : 12.95,
"placementY" : 127.687,
"placementWidth" : 873.491,
"placementHeight" : 22.02,
"startPage" : 4,
"endPage" : 4,
"contentWidth" : 840.126,
"contentHeight" : 12.95,
"contentWidth" : 873.491,
"contentHeight" : 22.02,
"margin" : {
"top" : 0.0,
"right" : 0.0,
Expand All @@ -8392,9 +8392,9 @@
"depth" : 3,
"layer" : 3,
"computedX" : 42.0,
"computedY" : 120.635,
"computedY" : 111.565,
"placementX" : 42.0,
"placementY" : 120.635,
"placementY" : 111.565,
"placementWidth" : 334.234,
"placementHeight" : 7.122,
"startPage" : 4,
Expand Down
Binary file modified web/showcase/pdf/flagships/default/engine-deck-v2.pdf
Binary file not shown.
Binary file modified web/showcase/pdf/flagships/default/engine-deck.pdf
Binary file not shown.
Loading