Skip to content

Cache span.kind as byte ordinal for fast isOutbound()#11116

Draft
dougqh wants to merge 2 commits intomasterfrom
dougqh/cache-span-kind-ordinal
Draft

Cache span.kind as byte ordinal for fast isOutbound()#11116
dougqh wants to merge 2 commits intomasterfrom
dougqh/cache-span-kind-ordinal

Conversation

@dougqh
Copy link
Copy Markdown
Contributor

@dougqh dougqh commented Apr 15, 2026

Summary

  • Caches span.kind as a volatile byte ordinal on DDSpanContext, following the existing httpStatusCode dual-store pattern
  • Rewrites DDSpan.isOutbound() from getTag() + String.equals() to a constant-time byte comparison (~2.8ns vs ~10ns)
  • Adds SPAN_KIND interception in TagInterceptor to populate the cache on setTag()
  • Includes IsOutboundBenchmark JMH benchmark

Motivation: DDSpanContext.getTag("span.kind") consumed ~14% of foreground CPU in a 16-thread span creation stress test. It was called from CoreTracer.onRootSpanStarted and onRootSpanFinished on every root span, falling through the getTag() switch to a full TagMap hash-table lookup with potential synchronization.

Benchmark results (JDK 1.8.0_382)

Benchmark Score Units
isOutbound_client 2.850 ± 0.047 ns/op
isOutbound_server 2.845 ± 0.122 ns/op
isOutbound_unset 2.838 ± 0.057 ns/op
getTag_spanKind_client (fast path) 3.970 ± 0.014 ns/op
getTag_spanKind_unset (fallthrough) 10.038 ± 0.163 ns/op

Test plan

  • All *DDSpan* tests pass
  • All *TagInterceptor* tests pass
  • Run full CI suite
  • Verify with span creation stress test profiling

🤖 Generated with Claude Code

DDSpanContext.getTag("span.kind") was consuming ~14% of foreground CPU
in span creation stress tests. It was called from DDSpan.isOutbound()
on every root span start and finish, falling through the getTag() switch
to a full TagMap hash-table lookup with potential synchronization.

This change caches span.kind as a volatile byte ordinal on DDSpanContext
(same dual-store pattern as httpStatusCode). The TagInterceptor now
intercepts SPAN_KIND to set the ordinal, and isOutbound() does a simple
byte comparison instead of getTag() + String.equals(). Benchmark shows
isOutbound() at constant ~2.8ns regardless of span kind.

tag: no release note
tag: ai generated

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
return;
}
// Use identity checks first (canonical constants), then fall back to equals
if (kind == Tags.SPAN_KIND_SERVER || Tags.SPAN_KIND_SERVER.equals(kind)) {
Copy link
Copy Markdown
Contributor Author

@dougqh dougqh Apr 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The identity checks are good, but might be better if we skip the equals check at first. Then fast path will be solely comprised of identify checks.

Only if none of strict identity checks match, would we then fallback to equality checks -- and for that we could use a string switch.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alternatively, it would nice to create a static helper function to perform the identity & equals check.


private volatile short httpStatusCode;

// Cached span.kind ordinal for fast isOutbound() checks.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I prefer to reduce the visibility of these internal constants to package visible.
That's especially true for SPAN_KIND_UNSET and SPAN_KIND_CUSTOM because they don't correspond to actual values.

}

public void removeTag(String tag) {
if (Tags.SPAN_KIND.equals(tag)) {
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might as well use the same identity comparison approach here, too.
Might be best to introduce a static helper to do the equals comparison.

// UNSET or CUSTOM -- fall through to tag map
Object value;
synchronized (unsafeTags) {
value = unsafeGetTag(key);
Copy link
Copy Markdown
Contributor Author

@dougqh dougqh Apr 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At this point key is known to be Tags.SPAN_KIND, this may optimize slightly better if we use the Tags.SPAN_KIND constant here.

case Tags.SPAN_KIND:
{
byte ordinal = spanKindOrdinal;
if (ordinal != SPAN_KIND_UNSET && ordinal != SPAN_KIND_CUSTOM) {
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If tweak this to ordinal > SPAN_KIND_UNSET && ordinal < SPAN_KIND_CUSTOM, we can help the JIT with bounds check elimination.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or as an alternative, we could just always read from SPAN_KIND_VALUES. And then only if the read value is null fallback to TagMap.

- Reduce visibility of SPAN_KIND_UNSET and SPAN_KIND_CUSTOM to
  package-private (they don't correspond to actual span.kind values)
- Restructure setSpanKind: identity checks first as a fast path,
  then string switch fallback for non-interned strings. Extracted
  into static spanKindToOrdinal() helper.
- Use identity-first comparison in removeTag() for SPAN_KIND check
- Use ordinal > SPAN_KIND_UNSET && ordinal < SPAN_KIND_CUSTOM in
  getTag() to help JIT with bounds check elimination
- Use Tags.SPAN_KIND constant instead of key in fallthrough unsafeGetTag

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@pr-commenter
Copy link
Copy Markdown

pr-commenter bot commented Apr 15, 2026

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master dougqh/cache-span-kind-ordinal
git_commit_date 1776190685 1776224027
git_commit_sha 4666c89 a8f31c4
release_version 1.62.0-SNAPSHOT~4666c89336 1.62.0-SNAPSHOT~a8f31c4270
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1776225901 1776225901
ci_job_id 1596099671 1596099671
ci_pipeline_id 107737793 107737793
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-rncytehy 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-0-rncytehy 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
module Agent Agent
parent None None

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 56 metrics, 15 unstable metrics.

Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.62.0-SNAPSHOT~a8f31c4270, baseline=1.62.0-SNAPSHOT~4666c89336

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.062 s) : 0, 1062079
Total [baseline] (11.127 s) : 0, 11126680
Agent [candidate] (1.064 s) : 0, 1064208
Total [candidate] (11.107 s) : 0, 11106734
section appsec
Agent [baseline] (1.254 s) : 0, 1254117
Total [baseline] (11.178 s) : 0, 11177591
Agent [candidate] (1.249 s) : 0, 1249038
Total [candidate] (11.156 s) : 0, 11155767
section iast
Agent [baseline] (1.237 s) : 0, 1236733
Total [baseline] (11.328 s) : 0, 11328499
Agent [candidate] (1.226 s) : 0, 1225780
Total [candidate] (11.298 s) : 0, 11298242
section profiling
Agent [baseline] (1.184 s) : 0, 1183637
Total [baseline] (11.042 s) : 0, 11042123
Agent [candidate] (1.182 s) : 0, 1182349
Total [candidate] (11.07 s) : 0, 11070197
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.062 s -
Agent appsec 1.254 s 192.038 ms (18.1%)
Agent iast 1.237 s 174.653 ms (16.4%)
Agent profiling 1.184 s 121.558 ms (11.4%)
Total tracing 11.127 s -
Total appsec 11.178 s 50.911 ms (0.5%)
Total iast 11.328 s 201.819 ms (1.8%)
Total profiling 11.042 s -84.557 ms (-0.8%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.064 s -
Agent appsec 1.249 s 184.83 ms (17.4%)
Agent iast 1.226 s 161.572 ms (15.2%)
Agent profiling 1.182 s 118.141 ms (11.1%)
Total tracing 11.107 s -
Total appsec 11.156 s 49.032 ms (0.4%)
Total iast 11.298 s 191.507 ms (1.7%)
Total profiling 11.07 s -36.538 ms (-0.3%)
gantt
    title petclinic - break down per module: candidate=1.62.0-SNAPSHOT~a8f31c4270, baseline=1.62.0-SNAPSHOT~4666c89336

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.234 ms) : 0, 1234
crashtracking [candidate] (1.227 ms) : 0, 1227
BytebuddyAgent [baseline] (636.017 ms) : 0, 636017
BytebuddyAgent [candidate] (636.546 ms) : 0, 636546
AgentMeter [baseline] (29.565 ms) : 0, 29565
AgentMeter [candidate] (29.638 ms) : 0, 29638
GlobalTracer [baseline] (250.097 ms) : 0, 250097
GlobalTracer [candidate] (250.057 ms) : 0, 250057
AppSec [baseline] (32.542 ms) : 0, 32542
AppSec [candidate] (32.372 ms) : 0, 32372
Debugger [baseline] (60.252 ms) : 0, 60252
Debugger [candidate] (60.253 ms) : 0, 60253
Remote Config [baseline] (605.507 µs) : 0, 606
Remote Config [candidate] (611.236 µs) : 0, 611
Telemetry [baseline] (8.076 ms) : 0, 8076
Telemetry [candidate] (8.191 ms) : 0, 8191
Flare Poller [baseline] (7.403 ms) : 0, 7403
Flare Poller [candidate] (9.128 ms) : 0, 9128
section appsec
crashtracking [baseline] (1.214 ms) : 0, 1214
crashtracking [candidate] (1.229 ms) : 0, 1229
BytebuddyAgent [baseline] (664.902 ms) : 0, 664902
BytebuddyAgent [candidate] (662.421 ms) : 0, 662421
AgentMeter [baseline] (12.145 ms) : 0, 12145
AgentMeter [candidate] (12.088 ms) : 0, 12088
GlobalTracer [baseline] (250.8 ms) : 0, 250800
GlobalTracer [candidate] (249.295 ms) : 0, 249295
IAST [baseline] (24.666 ms) : 0, 24666
IAST [candidate] (24.611 ms) : 0, 24611
AppSec [baseline] (185.177 ms) : 0, 185177
AppSec [candidate] (184.729 ms) : 0, 184729
Debugger [baseline] (66.305 ms) : 0, 66305
Debugger [candidate] (65.859 ms) : 0, 65859
Remote Config [baseline] (609.675 µs) : 0, 610
Remote Config [candidate] (599.954 µs) : 0, 600
Telemetry [baseline] (8.365 ms) : 0, 8365
Telemetry [candidate] (8.347 ms) : 0, 8347
Flare Poller [baseline] (3.521 ms) : 0, 3521
Flare Poller [candidate] (3.46 ms) : 0, 3460
section iast
crashtracking [baseline] (1.243 ms) : 0, 1243
crashtracking [candidate] (1.214 ms) : 0, 1214
BytebuddyAgent [baseline] (810.27 ms) : 0, 810270
BytebuddyAgent [candidate] (802.743 ms) : 0, 802743
AgentMeter [baseline] (11.762 ms) : 0, 11762
AgentMeter [candidate] (11.401 ms) : 0, 11401
GlobalTracer [baseline] (241.101 ms) : 0, 241101
GlobalTracer [candidate] (239.758 ms) : 0, 239758
IAST [baseline] (26.221 ms) : 0, 26221
IAST [candidate] (25.815 ms) : 0, 25815
AppSec [baseline] (31.915 ms) : 0, 31915
AppSec [candidate] (32.559 ms) : 0, 32559
Debugger [baseline] (61.322 ms) : 0, 61322
Debugger [candidate] (59.829 ms) : 0, 59829
Remote Config [baseline] (528.283 µs) : 0, 528
Remote Config [candidate] (531.484 µs) : 0, 531
Telemetry [baseline] (12.368 ms) : 0, 12368
Telemetry [candidate] (12.099 ms) : 0, 12099
Flare Poller [baseline] (3.432 ms) : 0, 3432
Flare Poller [candidate] (3.64 ms) : 0, 3640
section profiling
crashtracking [baseline] (1.171 ms) : 0, 1171
crashtracking [candidate] (1.178 ms) : 0, 1178
BytebuddyAgent [baseline] (690.495 ms) : 0, 690495
BytebuddyAgent [candidate] (690.428 ms) : 0, 690428
AgentMeter [baseline] (9.115 ms) : 0, 9115
AgentMeter [candidate] (9.026 ms) : 0, 9026
GlobalTracer [baseline] (207.277 ms) : 0, 207277
GlobalTracer [candidate] (207.15 ms) : 0, 207150
AppSec [baseline] (32.727 ms) : 0, 32727
AppSec [candidate] (32.756 ms) : 0, 32756
Debugger [baseline] (65.667 ms) : 0, 65667
Debugger [candidate] (65.276 ms) : 0, 65276
Remote Config [baseline] (577.855 µs) : 0, 578
Remote Config [candidate] (570.778 µs) : 0, 571
Telemetry [baseline] (7.811 ms) : 0, 7811
Telemetry [candidate] (7.791 ms) : 0, 7791
Flare Poller [baseline] (3.565 ms) : 0, 3565
Flare Poller [candidate] (3.514 ms) : 0, 3514
ProfilingAgent [baseline] (94.125 ms) : 0, 94125
ProfilingAgent [candidate] (93.554 ms) : 0, 93554
Profiling [baseline] (94.703 ms) : 0, 94703
Profiling [candidate] (94.117 ms) : 0, 94117
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.62.0-SNAPSHOT~a8f31c4270, baseline=1.62.0-SNAPSHOT~4666c89336

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.062 s) : 0, 1061869
Total [baseline] (8.836 s) : 0, 8836035
Agent [candidate] (1.064 s) : 0, 1064247
Total [candidate] (8.848 s) : 0, 8848050
section iast
Agent [baseline] (1.235 s) : 0, 1234909
Total [baseline] (9.597 s) : 0, 9597291
Agent [candidate] (1.231 s) : 0, 1230679
Total [candidate] (9.534 s) : 0, 9533842
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.062 s -
Agent iast 1.235 s 173.04 ms (16.3%)
Total tracing 8.836 s -
Total iast 9.597 s 761.256 ms (8.6%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.064 s -
Agent iast 1.231 s 166.432 ms (15.6%)
Total tracing 8.848 s -
Total iast 9.534 s 685.791 ms (7.8%)
gantt
    title insecure-bank - break down per module: candidate=1.62.0-SNAPSHOT~a8f31c4270, baseline=1.62.0-SNAPSHOT~4666c89336

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.262 ms) : 0, 1262
crashtracking [candidate] (1.253 ms) : 0, 1253
BytebuddyAgent [baseline] (636.961 ms) : 0, 636961
BytebuddyAgent [candidate] (636.538 ms) : 0, 636538
AgentMeter [baseline] (29.58 ms) : 0, 29580
AgentMeter [candidate] (29.62 ms) : 0, 29620
GlobalTracer [baseline] (250.175 ms) : 0, 250175
GlobalTracer [candidate] (250.098 ms) : 0, 250098
AppSec [baseline] (32.575 ms) : 0, 32575
AppSec [candidate] (32.579 ms) : 0, 32579
Debugger [baseline] (59.559 ms) : 0, 59559
Debugger [candidate] (59.361 ms) : 0, 59361
Remote Config [baseline] (618.465 µs) : 0, 618
Remote Config [candidate] (588.273 µs) : 0, 588
Telemetry [baseline] (8.182 ms) : 0, 8182
Telemetry [candidate] (8.039 ms) : 0, 8039
Flare Poller [baseline] (6.636 ms) : 0, 6636
Flare Poller [candidate] (9.712 ms) : 0, 9712
section iast
crashtracking [baseline] (1.247 ms) : 0, 1247
crashtracking [candidate] (1.227 ms) : 0, 1227
BytebuddyAgent [baseline] (808.683 ms) : 0, 808683
BytebuddyAgent [candidate] (807.128 ms) : 0, 807128
AgentMeter [baseline] (11.666 ms) : 0, 11666
AgentMeter [candidate] (11.659 ms) : 0, 11659
GlobalTracer [baseline] (241.618 ms) : 0, 241618
GlobalTracer [candidate] (239.937 ms) : 0, 239937
IAST [baseline] (26.129 ms) : 0, 26129
IAST [candidate] (26.502 ms) : 0, 26502
AppSec [baseline] (33.186 ms) : 0, 33186
AppSec [candidate] (31.265 ms) : 0, 31265
Debugger [baseline] (57.676 ms) : 0, 57676
Debugger [candidate] (57.301 ms) : 0, 57301
Remote Config [baseline] (1.146 ms) : 0, 1146
Remote Config [candidate] (518.292 µs) : 0, 518
Telemetry [baseline] (13.315 ms) : 0, 13315
Telemetry [candidate] (14.981 ms) : 0, 14981
Flare Poller [baseline] (3.506 ms) : 0, 3506
Flare Poller [candidate] (3.655 ms) : 0, 3655
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master dougqh/cache-span-kind-ordinal
git_commit_date 1776190685 1776224027
git_commit_sha 4666c89 a8f31c4
release_version 1.62.0-SNAPSHOT~4666c89336 1.62.0-SNAPSHOT~a8f31c4270
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1776226514 1776226514
ci_job_id 1596099672 1596099672
ci_pipeline_id 107737793 107737793
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-dyqqhoq4 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-0-dyqqhoq4 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 2 performance improvements and 0 performance regressions! Performance is the same for 18 metrics, 16 unstable metrics.

scenario Δ mean agg_http_req_duration_p50 Δ mean agg_http_req_duration_p95 Δ mean throughput candidate mean agg_http_req_duration_p50 candidate mean agg_http_req_duration_p95 candidate mean throughput baseline mean agg_http_req_duration_p50 baseline mean agg_http_req_duration_p95 baseline mean throughput
scenario:load:petclinic:iast:high_load better
[-2.056ms; -1.298ms] or [-10.899%; -6.878%]
better
[-2.144ms; -0.928ms] or [-7.126%; -3.085%]
unstable
[-8.052op/s; +45.989op/s] or [-3.293%; +18.807%]
17.191ms 28.548ms 263.500op/s 18.869ms 30.084ms 244.531op/s
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.62.0-SNAPSHOT~a8f31c4270, baseline=1.62.0-SNAPSHOT~4666c89336
    dateFormat X
    axisFormat %s
section baseline
no_agent (17.208 ms) : 17037, 17379
.   : milestone, 17208,
appsec (18.659 ms) : 18471, 18846
.   : milestone, 18659,
code_origins (17.773 ms) : 17600, 17946
.   : milestone, 17773,
iast (19.085 ms) : 18896, 19273
.   : milestone, 19085,
profiling (18.341 ms) : 18157, 18524
.   : milestone, 18341,
tracing (17.832 ms) : 17655, 18008
.   : milestone, 17832,
section candidate
no_agent (18.109 ms) : 17925, 18293
.   : milestone, 18109,
appsec (18.576 ms) : 18388, 18763
.   : milestone, 18576,
code_origins (17.822 ms) : 17646, 17999
.   : milestone, 17822,
iast (17.709 ms) : 17534, 17884
.   : milestone, 17709,
profiling (18.088 ms) : 17910, 18265
.   : milestone, 18088,
tracing (17.935 ms) : 17757, 18112
.   : milestone, 17935,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 17.208 ms [17.037 ms, 17.379 ms] -
appsec 18.659 ms [18.471 ms, 18.846 ms] 1.451 ms (8.4%)
code_origins 17.773 ms [17.6 ms, 17.946 ms] 565.092 µs (3.3%)
iast 19.085 ms [18.896 ms, 19.273 ms] 1.877 ms (10.9%)
profiling 18.341 ms [18.157 ms, 18.524 ms] 1.133 ms (6.6%)
tracing 17.832 ms [17.655 ms, 18.008 ms] 623.769 µs (3.6%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 18.109 ms [17.925 ms, 18.293 ms] -
appsec 18.576 ms [18.388 ms, 18.763 ms] 466.365 µs (2.6%)
code_origins 17.822 ms [17.646 ms, 17.999 ms] -287.186 µs (-1.6%)
iast 17.709 ms [17.534 ms, 17.884 ms] -400.648 µs (-2.2%)
profiling 18.088 ms [17.91 ms, 18.265 ms] -21.867 µs (-0.1%)
tracing 17.935 ms [17.757 ms, 18.112 ms] -174.819 µs (-1.0%)
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.62.0-SNAPSHOT~a8f31c4270, baseline=1.62.0-SNAPSHOT~4666c89336
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.25 ms) : 1237, 1263
.   : milestone, 1250,
iast (3.296 ms) : 3248, 3344
.   : milestone, 3296,
iast_FULL (6.084 ms) : 6022, 6146
.   : milestone, 6084,
iast_GLOBAL (3.791 ms) : 3727, 3855
.   : milestone, 3791,
profiling (2.013 ms) : 1994, 2031
.   : milestone, 2013,
tracing (1.888 ms) : 1872, 1905
.   : milestone, 1888,
section candidate
no_agent (1.238 ms) : 1225, 1250
.   : milestone, 1238,
iast (3.262 ms) : 3217, 3306
.   : milestone, 3262,
iast_FULL (6.004 ms) : 5943, 6064
.   : milestone, 6004,
iast_GLOBAL (3.67 ms) : 3611, 3729
.   : milestone, 3670,
profiling (2.119 ms) : 2100, 2137
.   : milestone, 2119,
tracing (1.888 ms) : 1873, 1904
.   : milestone, 1888,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.25 ms [1.237 ms, 1.263 ms] -
iast 3.296 ms [3.248 ms, 3.344 ms] 2.046 ms (163.6%)
iast_FULL 6.084 ms [6.022 ms, 6.146 ms] 4.834 ms (386.6%)
iast_GLOBAL 3.791 ms [3.727 ms, 3.855 ms] 2.541 ms (203.3%)
profiling 2.013 ms [1.994 ms, 2.031 ms] 762.377 µs (61.0%)
tracing 1.888 ms [1.872 ms, 1.905 ms] 638.087 µs (51.0%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.238 ms [1.225 ms, 1.25 ms] -
iast 3.262 ms [3.217 ms, 3.306 ms] 2.024 ms (163.6%)
iast_FULL 6.004 ms [5.943 ms, 6.064 ms] 4.766 ms (385.1%)
iast_GLOBAL 3.67 ms [3.611 ms, 3.729 ms] 2.433 ms (196.6%)
profiling 2.119 ms [2.1 ms, 2.137 ms] 881.091 µs (71.2%)
tracing 1.888 ms [1.873 ms, 1.904 ms] 650.583 µs (52.6%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master dougqh/cache-span-kind-ordinal
git_commit_date 1776190685 1776224027
git_commit_sha 4666c89 a8f31c4
release_version 1.62.0-SNAPSHOT~4666c89336 1.62.0-SNAPSHOT~a8f31c4270
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1776226255 1776226255
ci_job_id 1596099673 1596099673
ci_pipeline_id 107737793 107737793
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-leswx8gt 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-0-leswx8gt 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 1 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 0 unstable metrics.

scenario Δ mean execution_time candidate mean execution_time baseline mean execution_time
scenario:dacapo:tomcat:appsec better
[-1.409ms; -1.065ms] or [-37.339%; -28.218%]
2.536ms 3.773ms
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.62.0-SNAPSHOT~a8f31c4270, baseline=1.62.0-SNAPSHOT~4666c89336
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.163 s) : 15163000, 15163000
.   : milestone, 15163000,
appsec (14.748 s) : 14748000, 14748000
.   : milestone, 14748000,
iast (18.271 s) : 18271000, 18271000
.   : milestone, 18271000,
iast_GLOBAL (18.417 s) : 18417000, 18417000
.   : milestone, 18417000,
profiling (15.098 s) : 15098000, 15098000
.   : milestone, 15098000,
tracing (15.052 s) : 15052000, 15052000
.   : milestone, 15052000,
section candidate
no_agent (15.029 s) : 15029000, 15029000
.   : milestone, 15029000,
appsec (14.688 s) : 14688000, 14688000
.   : milestone, 14688000,
iast (18.719 s) : 18719000, 18719000
.   : milestone, 18719000,
iast_GLOBAL (18.202 s) : 18202000, 18202000
.   : milestone, 18202000,
profiling (14.828 s) : 14828000, 14828000
.   : milestone, 14828000,
tracing (15.014 s) : 15014000, 15014000
.   : milestone, 15014000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.163 s [15.163 s, 15.163 s] -
appsec 14.748 s [14.748 s, 14.748 s] -415.0 ms (-2.7%)
iast 18.271 s [18.271 s, 18.271 s] 3.108 s (20.5%)
iast_GLOBAL 18.417 s [18.417 s, 18.417 s] 3.254 s (21.5%)
profiling 15.098 s [15.098 s, 15.098 s] -65.0 ms (-0.4%)
tracing 15.052 s [15.052 s, 15.052 s] -111.0 ms (-0.7%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.029 s [15.029 s, 15.029 s] -
appsec 14.688 s [14.688 s, 14.688 s] -341.0 ms (-2.3%)
iast 18.719 s [18.719 s, 18.719 s] 3.69 s (24.6%)
iast_GLOBAL 18.202 s [18.202 s, 18.202 s] 3.173 s (21.1%)
profiling 14.828 s [14.828 s, 14.828 s] -201.0 ms (-1.3%)
tracing 15.014 s [15.014 s, 15.014 s] -15.0 ms (-0.1%)
Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.62.0-SNAPSHOT~a8f31c4270, baseline=1.62.0-SNAPSHOT~4666c89336
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.487 ms) : 1476, 1499
.   : milestone, 1487,
appsec (3.773 ms) : 3554, 3993
.   : milestone, 3773,
iast (2.265 ms) : 2196, 2333
.   : milestone, 2265,
iast_GLOBAL (2.324 ms) : 2254, 2394
.   : milestone, 2324,
profiling (2.094 ms) : 2039, 2149
.   : milestone, 2094,
tracing (2.086 ms) : 2032, 2139
.   : milestone, 2086,
section candidate
no_agent (1.487 ms) : 1475, 1499
.   : milestone, 1487,
appsec (2.536 ms) : 2482, 2591
.   : milestone, 2536,
iast (2.282 ms) : 2212, 2351
.   : milestone, 2282,
iast_GLOBAL (2.319 ms) : 2250, 2389
.   : milestone, 2319,
profiling (2.101 ms) : 2046, 2156
.   : milestone, 2101,
tracing (2.078 ms) : 2024, 2131
.   : milestone, 2078,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.487 ms [1.476 ms, 1.499 ms] -
appsec 3.773 ms [3.554 ms, 3.993 ms] 2.286 ms (153.7%)
iast 2.265 ms [2.196 ms, 2.333 ms] 777.407 µs (52.3%)
iast_GLOBAL 2.324 ms [2.254 ms, 2.394 ms] 836.693 µs (56.3%)
profiling 2.094 ms [2.039 ms, 2.149 ms] 606.934 µs (40.8%)
tracing 2.086 ms [2.032 ms, 2.139 ms] 598.349 µs (40.2%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.487 ms [1.475 ms, 1.499 ms] -
appsec 2.536 ms [2.482 ms, 2.591 ms] 1.049 ms (70.6%)
iast 2.282 ms [2.212 ms, 2.351 ms] 794.561 µs (53.4%)
iast_GLOBAL 2.319 ms [2.25 ms, 2.389 ms] 832.304 µs (56.0%)
profiling 2.101 ms [2.046 ms, 2.156 ms] 614.028 µs (41.3%)
tracing 2.078 ms [2.024 ms, 2.131 ms] 590.521 µs (39.7%)

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