Skip to content

Consolidate and calibrate the test/perf benchmark scenarios#5781

Open
BalusC wants to merge 1 commit into
4.1from
perf_bench_scenarios
Open

Consolidate and calibrate the test/perf benchmark scenarios#5781
BalusC wants to merge 1 commit into
4.1from
perf_bench_scenarios

Conversation

@BalusC

@BalusC BalusC commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Consolidates and calibrates the test/perf benchmark scenarios (harness for #5753).

  • Merge TableBean + RepeatBeanDataBean — one shared bean for the table/repeat/composite row data; composites iterate a smaller compositeRows list since they're heavier per row.
  • Drop the size-adjective variants — the -heavy variants become the canonical scenario (suffix dropped, smaller origins removed, since they only differed in row count). composite-heavycomposite-unrolled (a c:forEach-unrolled static composite tree, the RESTORE_PHASE is slow on Mojarra 2.3 #4811 pattern).
  • Add view-unrolled + view-unrolled-ajax — a flat c:forEach static tree, no inputs, so a postback restores delta-free (exercises the restoreViewRootOnly skip) and rebuilds + re-renders the whole view at scale (full and partial-response) — the buildView / descendant mark-id cache path that had no other coverage.
  • Calibrate every scenario to ~5 ms/postback on tomcat-myfaces — per-scenario times now comparable (~5–7 ms) instead of the prior 0.3–35 ms spread, and the suite runs in roughly half the wall time. The ajax-inputs scenarios are restore-dominated and bounded by the container's default maxParameterCount, so they stay lighter by necessity.

Calibrated run (Mojarra 4.1.10-SNAPSHOT vs MyFaces 4.1.4-SNAPSHOT, Tomcat): Mojarra wins every existing scenario (−10…−34%); the only remaining deficit is the new *-unrolled trio (+25…+47%, view-unrolled +47%) — the at-scale buildView/mark-id path these scenarios were added to surface.

🤖 Generated with Claude Code

Merge TableBean and RepeatBean into a single DataBean shared by the table, repeat and composite scenarios; composites iterate a smaller compositeRows list since they are heavier per row.

Drop the size-adjective scenario variants: the former `-heavy` variants become the canonical scenario (suffix dropped, smaller origins removed, since they only differed in row count), and `composite-heavy` is renamed `composite-unrolled` to name what it is — a `c:forEach`-unrolled static composite tree.

Add `view-unrolled` and `view-unrolled-ajax`: a flat `c:forEach`-unrolled static tree with no inputs, so a postback restores it delta-free (exercising the restoreViewRootOnly skip) and rebuilds + re-renders the whole tree at scale, full and partial-response — the descendant mark-id cache / buildView path that had no other coverage.

Calibrate every scenario's size (row counts and `c:forEach` ends) so each costs ~5 ms per postback on tomcat-myfaces, making per-scenario times comparable instead of the prior 0.3–35 ms spread and roughly halving the suite wall time. The ajax-inputs scenarios are restore-dominated and bounded by the container's default maxParameterCount, so they stay lighter by necessity.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant