Skip to content

Reuse SpanKind Entry in ClientDecorator#10503

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 38 commits intomasterfrom
dougqh/client-kind-entry-reuse
Feb 23, 2026
Merged

Reuse SpanKind Entry in ClientDecorator#10503
gh-worker-dd-mergequeue-cf854d[bot] merged 38 commits intomasterfrom
dougqh/client-kind-entry-reuse

Conversation

@dougqh
Copy link
Copy Markdown
Contributor

@dougqh dougqh commented Feb 2, 2026

What Does This Do

Caches & reuses SpanKind Entry in ClientDecorator

Motivation

Reduce allocation & garbage collection - improves throughput under load

Additional Notes

Contributor Checklist

Jira ticket: [PROJ-IDENT]

dougqh added 30 commits January 12, 2026 14:33
EntryIterator and EntryChangeIterator are arguably redundant
Fixed bug TagValueConversions.toBoolean
Could cause LegacyTagMap.EntryReader to produce incorrect answers to some queries

For simplicity, now treating Byte and Short as Integer.  That will make calling code doing primitive handling simpler.

Fleshing out tests -- more tests to come
Coverage for byte, short, float, and double
Adding methods to AgentSpan / DDSpan that take TagMap.Entry/Reader objects directly

This will enable TagMap.Entry reuse which can reduce memory allocation/GC pressure
Methods are intended to be used to create TagMap.Entry objects for repeatedly used values

Overloads are provided for all the supported types to be easier for developers not familiar with TagMap internals.  Internally, TagMap still uses the more explicit new<X>Entry methods.
Removing statics that were previously moved to TagValueConversions
- tests exposed missing TagMap.Entry.create for boolean
- added explanatory strings to some asserts
…aDog/dd-trace-java into dougqh/fdirect-apis-for-tagmap-entry
@dougqh dougqh requested review from mtoffl01 and removed request for a team February 2, 2026 18:59
@dougqh dougqh added the tag: performance Performance related changes label Feb 2, 2026
@pr-commenter
Copy link
Copy Markdown

pr-commenter bot commented Feb 2, 2026

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master dougqh/client-kind-entry-reuse
git_commit_date 1771883612 1771883864
git_commit_sha 8fbdc86 e55536f
release_version 1.60.0-SNAPSHOT~8fbdc86698 1.59.0-SNAPSHOT~e55536fe53
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1771885647 1771885647
ci_job_id 1449629711 1449629711
ci_pipeline_id 98404781 98404781
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-2-q7wuj4yi 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-2-q7wuj4yi 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 63 metrics, 8 unstable metrics.

Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.59.0-SNAPSHOT~e55536fe53, baseline=1.60.0-SNAPSHOT~8fbdc86698

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.066 s) : 0, 1065923
Total [baseline] (10.863 s) : 0, 10862693
Agent [candidate] (1.066 s) : 0, 1066143
Total [candidate] (10.85 s) : 0, 10850154
section appsec
Agent [baseline] (1.239 s) : 0, 1239402
Total [baseline] (11.179 s) : 0, 11178544
Agent [candidate] (1.241 s) : 0, 1240605
Total [candidate] (11.075 s) : 0, 11074672
section iast
Agent [baseline] (1.24 s) : 0, 1240046
Total [baseline] (11.283 s) : 0, 11283121
Agent [candidate] (1.234 s) : 0, 1233591
Total [candidate] (11.276 s) : 0, 11276210
section profiling
Agent [baseline] (1.197 s) : 0, 1196735
Total [baseline] (10.962 s) : 0, 10961898
Agent [candidate] (1.191 s) : 0, 1190863
Total [candidate] (10.926 s) : 0, 10926189
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.066 s -
Agent appsec 1.239 s 173.478 ms (16.3%)
Agent iast 1.24 s 174.123 ms (16.3%)
Agent profiling 1.197 s 130.811 ms (12.3%)
Total tracing 10.863 s -
Total appsec 11.179 s 315.852 ms (2.9%)
Total iast 11.283 s 420.428 ms (3.9%)
Total profiling 10.962 s 99.206 ms (0.9%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.066 s -
Agent appsec 1.241 s 174.461 ms (16.4%)
Agent iast 1.234 s 167.448 ms (15.7%)
Agent profiling 1.191 s 124.72 ms (11.7%)
Total tracing 10.85 s -
Total appsec 11.075 s 224.519 ms (2.1%)
Total iast 11.276 s 426.057 ms (3.9%)
Total profiling 10.926 s 76.035 ms (0.7%)
gantt
    title petclinic - break down per module: candidate=1.59.0-SNAPSHOT~e55536fe53, baseline=1.60.0-SNAPSHOT~8fbdc86698

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.193 ms) : 0, 1193
crashtracking [candidate] (1.183 ms) : 0, 1183
BytebuddyAgent [baseline] (628.501 ms) : 0, 628501
BytebuddyAgent [candidate] (628.266 ms) : 0, 628266
AgentMeter [baseline] (29.072 ms) : 0, 29072
AgentMeter [candidate] (29.05 ms) : 0, 29050
GlobalTracer [baseline] (257.707 ms) : 0, 257707
GlobalTracer [candidate] (257.548 ms) : 0, 257548
AppSec [baseline] (33.039 ms) : 0, 33039
AppSec [candidate] (32.962 ms) : 0, 32962
Debugger [baseline] (64.313 ms) : 0, 64313
Debugger [candidate] (64.475 ms) : 0, 64475
Remote Config [baseline] (629.098 µs) : 0, 629
Remote Config [candidate] (608.201 µs) : 0, 608
Telemetry [baseline] (9.268 ms) : 0, 9268
Telemetry [candidate] (10.72 ms) : 0, 10720
Flare Poller [baseline] (6.116 ms) : 0, 6116
Flare Poller [candidate] (5.341 ms) : 0, 5341
section appsec
crashtracking [baseline] (1.194 ms) : 0, 1194
crashtracking [candidate] (1.193 ms) : 0, 1193
BytebuddyAgent [baseline] (656.448 ms) : 0, 656448
BytebuddyAgent [candidate] (659.834 ms) : 0, 659834
AgentMeter [baseline] (11.939 ms) : 0, 11939
AgentMeter [candidate] (11.964 ms) : 0, 11964
GlobalTracer [baseline] (258.375 ms) : 0, 258375
GlobalTracer [candidate] (258.414 ms) : 0, 258414
IAST [baseline] (25.329 ms) : 0, 25329
IAST [candidate] (25.298 ms) : 0, 25298
AppSec [baseline] (168.514 ms) : 0, 168514
AppSec [candidate] (167.513 ms) : 0, 167513
Debugger [baseline] (67.45 ms) : 0, 67450
Debugger [candidate] (66.495 ms) : 0, 66495
Remote Config [baseline] (661.917 µs) : 0, 662
Remote Config [candidate] (636.688 µs) : 0, 637
Telemetry [baseline] (9.688 ms) : 0, 9688
Telemetry [candidate] (9.407 ms) : 0, 9407
Flare Poller [baseline] (3.8 ms) : 0, 3800
Flare Poller [candidate] (3.747 ms) : 0, 3747
section iast
crashtracking [baseline] (1.202 ms) : 0, 1202
crashtracking [candidate] (1.19 ms) : 0, 1190
BytebuddyAgent [baseline] (801.178 ms) : 0, 801178
BytebuddyAgent [candidate] (797.629 ms) : 0, 797629
AgentMeter [baseline] (11.361 ms) : 0, 11361
AgentMeter [candidate] (11.296 ms) : 0, 11296
GlobalTracer [baseline] (249.171 ms) : 0, 249171
GlobalTracer [candidate] (247.819 ms) : 0, 247819
IAST [baseline] (27.373 ms) : 0, 27373
IAST [candidate] (26.886 ms) : 0, 26886
AppSec [baseline] (35.903 ms) : 0, 35903
AppSec [candidate] (35.751 ms) : 0, 35751
Debugger [baseline] (65.082 ms) : 0, 65082
Debugger [candidate] (64.331 ms) : 0, 64331
Remote Config [baseline] (537.123 µs) : 0, 537
Remote Config [candidate] (547.732 µs) : 0, 548
Telemetry [baseline] (8.773 ms) : 0, 8773
Telemetry [candidate] (8.702 ms) : 0, 8702
Flare Poller [baseline] (3.46 ms) : 0, 3460
Flare Poller [candidate] (3.462 ms) : 0, 3462
section profiling
crashtracking [baseline] (1.196 ms) : 0, 1196
crashtracking [candidate] (1.178 ms) : 0, 1178
BytebuddyAgent [baseline] (687.711 ms) : 0, 687711
BytebuddyAgent [candidate] (681.852 ms) : 0, 681852
AgentMeter [baseline] (8.543 ms) : 0, 8543
AgentMeter [candidate] (8.56 ms) : 0, 8560
GlobalTracer [baseline] (216.064 ms) : 0, 216064
GlobalTracer [candidate] (216.06 ms) : 0, 216060
AppSec [baseline] (32.465 ms) : 0, 32465
AppSec [candidate] (32.691 ms) : 0, 32691
Debugger [baseline] (67.027 ms) : 0, 67027
Debugger [candidate] (67.33 ms) : 0, 67330
Remote Config [baseline] (639.449 µs) : 0, 639
Remote Config [candidate] (627.83 µs) : 0, 628
Telemetry [baseline] (9.187 ms) : 0, 9187
Telemetry [candidate] (9.005 ms) : 0, 9005
Flare Poller [baseline] (3.749 ms) : 0, 3749
Flare Poller [candidate] (3.835 ms) : 0, 3835
ProfilingAgent [baseline] (99.286 ms) : 0, 99286
ProfilingAgent [candidate] (99.194 ms) : 0, 99194
Profiling [baseline] (99.865 ms) : 0, 99865
Profiling [candidate] (99.77 ms) : 0, 99770
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.59.0-SNAPSHOT~e55536fe53, baseline=1.60.0-SNAPSHOT~8fbdc86698

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.08 s) : 0, 1080357
Total [baseline] (8.792 s) : 0, 8792007
Agent [candidate] (1.064 s) : 0, 1064254
Total [candidate] (8.753 s) : 0, 8753199
section iast
Agent [baseline] (1.238 s) : 0, 1238191
Total [baseline] (9.422 s) : 0, 9421877
Agent [candidate] (1.233 s) : 0, 1232782
Total [candidate] (9.441 s) : 0, 9441099
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.08 s -
Agent iast 1.238 s 157.833 ms (14.6%)
Total tracing 8.792 s -
Total iast 9.422 s 629.87 ms (7.2%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.064 s -
Agent iast 1.233 s 168.528 ms (15.8%)
Total tracing 8.753 s -
Total iast 9.441 s 687.9 ms (7.9%)
gantt
    title insecure-bank - break down per module: candidate=1.59.0-SNAPSHOT~e55536fe53, baseline=1.60.0-SNAPSHOT~8fbdc86698

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.209 ms) : 0, 1209
crashtracking [candidate] (1.202 ms) : 0, 1202
BytebuddyAgent [baseline] (637.714 ms) : 0, 637714
BytebuddyAgent [candidate] (627.885 ms) : 0, 627885
AgentMeter [baseline] (29.58 ms) : 0, 29580
AgentMeter [candidate] (29.085 ms) : 0, 29085
GlobalTracer [baseline] (260.811 ms) : 0, 260811
GlobalTracer [candidate] (257.457 ms) : 0, 257457
AppSec [baseline] (33.545 ms) : 0, 33545
AppSec [candidate] (32.687 ms) : 0, 32687
Debugger [baseline] (64.366 ms) : 0, 64366
Debugger [candidate] (64.776 ms) : 0, 64776
Remote Config [baseline] (624.689 µs) : 0, 625
Remote Config [candidate] (603.871 µs) : 0, 604
Telemetry [baseline] (11.436 ms) : 0, 11436
Telemetry [candidate] (9.813 ms) : 0, 9813
Flare Poller [baseline] (4.658 ms) : 0, 4658
Flare Poller [candidate] (4.564 ms) : 0, 4564
section iast
crashtracking [baseline] (1.214 ms) : 0, 1214
crashtracking [candidate] (1.194 ms) : 0, 1194
BytebuddyAgent [baseline] (800.79 ms) : 0, 800790
BytebuddyAgent [candidate] (796.549 ms) : 0, 796549
AgentMeter [baseline] (11.497 ms) : 0, 11497
AgentMeter [candidate] (11.28 ms) : 0, 11280
GlobalTracer [baseline] (248.271 ms) : 0, 248271
GlobalTracer [candidate] (247.836 ms) : 0, 247836
IAST [baseline] (27.311 ms) : 0, 27311
IAST [candidate] (27.003 ms) : 0, 27003
AppSec [baseline] (35.377 ms) : 0, 35377
AppSec [candidate] (34.104 ms) : 0, 34104
Debugger [baseline] (64.797 ms) : 0, 64797
Debugger [candidate] (66.108 ms) : 0, 66108
Remote Config [baseline] (556.126 µs) : 0, 556
Remote Config [candidate] (554.586 µs) : 0, 555
Telemetry [baseline] (8.764 ms) : 0, 8764
Telemetry [candidate] (8.743 ms) : 0, 8743
Flare Poller [baseline] (3.479 ms) : 0, 3479
Flare Poller [candidate] (3.454 ms) : 0, 3454
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master dougqh/client-kind-entry-reuse
git_commit_date 1771883612 1771883864
git_commit_sha 8fbdc86 e55536f
release_version 1.60.0-SNAPSHOT~8fbdc86698 1.59.0-SNAPSHOT~e55536fe53
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1771886036 1771886036
ci_job_id 1449629712 1449629712
ci_pipeline_id 98404781 98404781
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-054vkey1 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-054vkey1 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 0 performance improvements and 3 performance regressions! Performance is the same for 18 metrics, 15 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:insecure-bank:iast_GLOBAL:high_load worse
[+62.380µs; +238.299µs] or [+2.292%; +8.755%]
worse
[+166.853µs; +638.100µs] or [+2.178%; +8.328%]
unstable
[-209.482op/s; +75.420op/s] or [-15.722%; +5.661%]
2.872ms 8.064ms 1265.344op/s 2.722ms 7.662ms 1332.375op/s
scenario:load:petclinic:profiling:high_load worse
[+0.733ms; +1.664ms] or [+4.017%; +9.119%]
unsure
[+0.549ms; +2.168ms] or [+1.851%; +7.305%]
unstable
[-36.402op/s; +8.964op/s] or [-14.528%; +3.578%]
19.451ms 31.031ms 236.844op/s 18.252ms 29.672ms 250.562op/s
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.59.0-SNAPSHOT~e55536fe53, baseline=1.60.0-SNAPSHOT~8fbdc86698
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.24 ms) : 1227, 1253
.   : milestone, 1240,
iast (3.193 ms) : 3149, 3237
.   : milestone, 3193,
iast_FULL (5.83 ms) : 5771, 5890
.   : milestone, 5830,
iast_GLOBAL (3.438 ms) : 3391, 3486
.   : milestone, 3438,
profiling (2.024 ms) : 2006, 2041
.   : milestone, 2024,
tracing (1.787 ms) : 1773, 1801
.   : milestone, 1787,
section candidate
no_agent (1.192 ms) : 1181, 1204
.   : milestone, 1192,
iast (3.311 ms) : 3260, 3361
.   : milestone, 3311,
iast_FULL (5.998 ms) : 5937, 6059
.   : milestone, 5998,
iast_GLOBAL (3.623 ms) : 3569, 3677
.   : milestone, 3623,
profiling (2.114 ms) : 2095, 2132
.   : milestone, 2114,
tracing (1.818 ms) : 1802, 1834
.   : milestone, 1818,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.24 ms [1.227 ms, 1.253 ms] -
iast 3.193 ms [3.149 ms, 3.237 ms] 1.953 ms (157.5%)
iast_FULL 5.83 ms [5.771 ms, 5.89 ms] 4.591 ms (370.2%)
iast_GLOBAL 3.438 ms [3.391 ms, 3.486 ms] 2.198 ms (177.3%)
profiling 2.024 ms [2.006 ms, 2.041 ms] 783.594 µs (63.2%)
tracing 1.787 ms [1.773 ms, 1.801 ms] 546.639 µs (44.1%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.192 ms [1.181 ms, 1.204 ms] -
iast 3.311 ms [3.26 ms, 3.361 ms] 2.118 ms (177.6%)
iast_FULL 5.998 ms [5.937 ms, 6.059 ms] 4.806 ms (403.0%)
iast_GLOBAL 3.623 ms [3.569 ms, 3.677 ms] 2.431 ms (203.8%)
profiling 2.114 ms [2.095 ms, 2.132 ms] 921.056 µs (77.2%)
tracing 1.818 ms [1.802 ms, 1.834 ms] 625.65 µs (52.5%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.59.0-SNAPSHOT~e55536fe53, baseline=1.60.0-SNAPSHOT~8fbdc86698
    dateFormat X
    axisFormat %s
section baseline
no_agent (18.895 ms) : 18703, 19088
.   : milestone, 18895,
appsec (19.118 ms) : 18923, 19314
.   : milestone, 19118,
code_origins (17.656 ms) : 17479, 17833
.   : milestone, 17656,
iast (17.593 ms) : 17416, 17770
.   : milestone, 17593,
profiling (18.626 ms) : 18440, 18812
.   : milestone, 18626,
tracing (17.681 ms) : 17504, 17858
.   : milestone, 17681,
section candidate
no_agent (18.155 ms) : 17970, 18340
.   : milestone, 18155,
appsec (19.731 ms) : 19525, 19937
.   : milestone, 19731,
code_origins (17.292 ms) : 17122, 17462
.   : milestone, 17292,
iast (17.971 ms) : 17791, 18151
.   : milestone, 17971,
profiling (19.71 ms) : 19509, 19911
.   : milestone, 19710,
tracing (17.873 ms) : 17695, 18051
.   : milestone, 17873,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 18.895 ms [18.703 ms, 19.088 ms] -
appsec 19.118 ms [18.923 ms, 19.314 ms] 222.974 µs (1.2%)
code_origins 17.656 ms [17.479 ms, 17.833 ms] -1.239 ms (-6.6%)
iast 17.593 ms [17.416 ms, 17.77 ms] -1.303 ms (-6.9%)
profiling 18.626 ms [18.44 ms, 18.812 ms] -269.15 µs (-1.4%)
tracing 17.681 ms [17.504 ms, 17.858 ms] -1.214 ms (-6.4%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 18.155 ms [17.97 ms, 18.34 ms] -
appsec 19.731 ms [19.525 ms, 19.937 ms] 1.576 ms (8.7%)
code_origins 17.292 ms [17.122 ms, 17.462 ms] -863.192 µs (-4.8%)
iast 17.971 ms [17.791 ms, 18.151 ms] -184.215 µs (-1.0%)
profiling 19.71 ms [19.509 ms, 19.911 ms] 1.555 ms (8.6%)
tracing 17.873 ms [17.695 ms, 18.051 ms] -281.903 µs (-1.6%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master dougqh/client-kind-entry-reuse
git_commit_date 1771883612 1771883864
git_commit_sha 8fbdc86 e55536f
release_version 1.60.0-SNAPSHOT~8fbdc86698 1.59.0-SNAPSHOT~e55536fe53
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1771885850 1771885850
ci_job_id 1449629713 1449629713
ci_pipeline_id 98404781 98404781
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-3-kkhdz4i0 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-3-kkhdz4i0 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 0 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 1 unstable metrics.

Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.59.0-SNAPSHOT~e55536fe53, baseline=1.60.0-SNAPSHOT~8fbdc86698
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.47 ms) : 1458, 1481
.   : milestone, 1470,
appsec (2.512 ms) : 2457, 2567
.   : milestone, 2512,
iast (2.246 ms) : 2176, 2315
.   : milestone, 2246,
iast_GLOBAL (2.295 ms) : 2225, 2365
.   : milestone, 2295,
profiling (2.082 ms) : 2027, 2137
.   : milestone, 2082,
tracing (2.055 ms) : 2001, 2108
.   : milestone, 2055,
section candidate
no_agent (1.47 ms) : 1459, 1481
.   : milestone, 1470,
appsec (3.78 ms) : 3559, 4002
.   : milestone, 3780,
iast (2.255 ms) : 2186, 2324
.   : milestone, 2255,
iast_GLOBAL (2.295 ms) : 2225, 2365
.   : milestone, 2295,
profiling (2.09 ms) : 2034, 2146
.   : milestone, 2090,
tracing (2.07 ms) : 2016, 2124
.   : milestone, 2070,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.47 ms [1.458 ms, 1.481 ms] -
appsec 2.512 ms [2.457 ms, 2.567 ms] 1.043 ms (71.0%)
iast 2.246 ms [2.176 ms, 2.315 ms] 776.069 µs (52.8%)
iast_GLOBAL 2.295 ms [2.225 ms, 2.365 ms] 825.488 µs (56.2%)
profiling 2.082 ms [2.027 ms, 2.137 ms] 612.788 µs (41.7%)
tracing 2.055 ms [2.001 ms, 2.108 ms] 585.312 µs (39.8%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.47 ms [1.459 ms, 1.481 ms] -
appsec 3.78 ms [3.559 ms, 4.002 ms] 2.31 ms (157.2%)
iast 2.255 ms [2.186 ms, 2.324 ms] 785.03 µs (53.4%)
iast_GLOBAL 2.295 ms [2.225 ms, 2.365 ms] 824.85 µs (56.1%)
profiling 2.09 ms [2.034 ms, 2.146 ms] 620.012 µs (42.2%)
tracing 2.07 ms [2.016 ms, 2.124 ms] 600.122 µs (40.8%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.59.0-SNAPSHOT~e55536fe53, baseline=1.60.0-SNAPSHOT~8fbdc86698
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.508 s) : 15508000, 15508000
.   : milestone, 15508000,
appsec (14.942 s) : 14942000, 14942000
.   : milestone, 14942000,
iast (18.148 s) : 18148000, 18148000
.   : milestone, 18148000,
iast_GLOBAL (17.758 s) : 17758000, 17758000
.   : milestone, 17758000,
profiling (14.894 s) : 14894000, 14894000
.   : milestone, 14894000,
tracing (14.647 s) : 14647000, 14647000
.   : milestone, 14647000,
section candidate
no_agent (15.46 s) : 15460000, 15460000
.   : milestone, 15460000,
appsec (14.773 s) : 14773000, 14773000
.   : milestone, 14773000,
iast (18.482 s) : 18482000, 18482000
.   : milestone, 18482000,
iast_GLOBAL (17.9 s) : 17900000, 17900000
.   : milestone, 17900000,
profiling (15.521 s) : 15521000, 15521000
.   : milestone, 15521000,
tracing (14.626 s) : 14626000, 14626000
.   : milestone, 14626000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.508 s [15.508 s, 15.508 s] -
appsec 14.942 s [14.942 s, 14.942 s] -566.0 ms (-3.6%)
iast 18.148 s [18.148 s, 18.148 s] 2.64 s (17.0%)
iast_GLOBAL 17.758 s [17.758 s, 17.758 s] 2.25 s (14.5%)
profiling 14.894 s [14.894 s, 14.894 s] -614.0 ms (-4.0%)
tracing 14.647 s [14.647 s, 14.647 s] -861.0 ms (-5.6%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.46 s [15.46 s, 15.46 s] -
appsec 14.773 s [14.773 s, 14.773 s] -687.0 ms (-4.4%)
iast 18.482 s [18.482 s, 18.482 s] 3.022 s (19.5%)
iast_GLOBAL 17.9 s [17.9 s, 17.9 s] 2.44 s (15.8%)
profiling 15.521 s [15.521 s, 15.521 s] 61.0 ms (0.4%)
tracing 14.626 s [14.626 s, 14.626 s] -834.0 ms (-5.4%)

Some of this was a bad merge, but I probably missed some in my other PR, too

@Test
public void objectEntry() {
public void newObjectEntry() {
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.

This is clean-up of tests that I missed on the original PR.
I'm happy to separate this if that's what the reviewer would prefer.

private final TagMap.Entry spanKindEntry() {
TagMap.Entry kindEntry = cachedSpanKindEntry;
if (kindEntry == null) {
cachedSpanKindEntry = kindEntry = TagMap.Entry.create(Tags.SPAN_KIND, spanKind());
Copy link
Copy Markdown
Contributor

@ygree ygree Feb 6, 2026

Choose a reason for hiding this comment

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

As a side note, this could have been done in the constructor if spanKind had been passed as a parameter instead of being defined as an overridable method.

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.

Yes, I would very much like to refactor the decorators to make such things possible.
For the moment, I'm just trying to do small isolated changes for quick wins.

But I do think we really need to revisit the decorators, I think are adding a lot of unnecessary overhead.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

That makes sense. I just realized that the current structure conceals invisible contracts, such as the requirement that spanKind not change.

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 tried the approach of doing a virtual call in the constructor, but that had other problems.
It created issues with static field initialization order. If the virtual method refers to a static and comes after the decorator singleton field, then the other static field is null during decorator construction.

So for now, I'm sticking with caching approach, but adding a comment to explain why.

Copy link
Copy Markdown
Contributor

@ygree ygree left a comment

Choose a reason for hiding this comment

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

Looks good!

@dougqh dougqh enabled auto-merge February 23, 2026 21:14
@dougqh dougqh disabled auto-merge February 23, 2026 21:14
@dougqh dougqh enabled auto-merge February 23, 2026 21:27
@dougqh dougqh added this pull request to the merge queue Feb 23, 2026
@dd-octo-sts
Copy link
Copy Markdown
Contributor

dd-octo-sts bot commented Feb 23, 2026

/merge

@gh-worker-devflow-routing-ef8351
Copy link
Copy Markdown

gh-worker-devflow-routing-ef8351 bot commented Feb 23, 2026

View all feedbacks in Devflow UI.

2026-02-23 22:50:25 UTC ℹ️ Start processing command /merge


2026-02-23 22:50:29 UTC ℹ️ MergeQueue: pull request added to the queue

The expected merge time in master is approximately 1h (p90).


2026-02-23 23:46:08 UTC ℹ️ MergeQueue: This merge request was merged

@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Feb 23, 2026
@gh-worker-dd-mergequeue-cf854d gh-worker-dd-mergequeue-cf854d bot merged commit c1cbca1 into master Feb 23, 2026
580 checks passed
@gh-worker-dd-mergequeue-cf854d gh-worker-dd-mergequeue-cf854d bot deleted the dougqh/client-kind-entry-reuse branch February 23, 2026 23:46
@github-actions github-actions bot added this to the 1.60.0 milestone Feb 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: core Tracer core tag: performance Performance related changes type: enhancement Enhancements and improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants