You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2026/08/15 08:31:00 UTC
[jira] [Commented] (TAP5-2839) Add JMH benchmarking
[ https://issues.apache.org/jira/browse/TAP5-2839?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18104975#comment-18104975 ]
ASF subversion and git services commented on TAP5-2839:
-------------------------------------------------------
Commit 00a61391bea71ee9f1580b75631581b7c3025d70 in tapestry-5's branch refs/heads/TAP5-2839 from Ben Weidig
[ https://gitbox.apache.org/repos/asf?p=tapestry-5.git;h=00a61391b ]
TAP5-2839: introduce JMH to commons, core, ioc, plastic
> Add JMH benchmarking
> --------------------
>
> Key: TAP5-2839
> URL: https://issues.apache.org/jira/browse/TAP5-2839
> Project: Tapestry 5
> Issue Type: Improvement
> Affects Versions: 5.10.0
> Reporter: Ben Weidig
> Assignee: Ben Weidig
> Priority: Minor
>
> Performance changes in Tapestry aren't currently measurable, at least not in a deterministic fashion.
> There is no way to state what a change to the IoC registry, a coercion, or the DOM rendering actually costs based on hard numbers.
> h4. Proposal
> Introduce [JMH|https://github.com/openjdk/jmh] as a Gradle convention plugin ({{tapestry.jmh-convention}}), so any module can carry microbenchmarks in {{src/jmh/java}}.
> * JMH {{1.37}}, declared in the version catalog
> * Benchmark source set compiles against the module's own classes and its {{provided}} configuration, mirroring the test source set
> * Two tasks per module: {{jmh}} (run) and {{jmhList}} (list without running)
> * Run options as {{-P}} properties: {{jmh.include}}, {{jmh.exclude}}, {{jmh.quick}}, {{jmh.forks}}, {{jmh.profilers}}, {{jmh.resultFile}}, and others
> * Results are written as JSON, so a before/after pair can be diffed, and easier visualized
> h4. CI
> Benchmarks are deliberately *not* wired into {{check}} or {{build}}.
> A JMH run can take minutes or even longer, and has therefore no place in CI.
> The root task {{jmhCompileAll}} compiles every benchmark source set instead, so refactorings cannot break them silently.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)