Skip to content

Reducing Allocation from GitInfo#10498

Merged
dougqh merged 50 commits intomasterfrom
dougqh/gitinfo-entry-reuse
Feb 5, 2026
Merged

Reducing Allocation from GitInfo#10498
dougqh merged 50 commits intomasterfrom
dougqh/gitinfo-entry-reuse

Conversation

@dougqh
Copy link
Contributor

@dougqh dougqh commented Feb 2, 2026

What Does This Do

Reuses TagMap.Entry objects for git repository url & commit sha

Motivation

Reduces allocation & garbage collection - results in better throughput under high load / when memory is scarce

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 a review from mhlidd February 2, 2026 17:53
return delegate.setTag(key, value)
}

@Override
Copy link
Contributor Author

@dougqh dougqh Feb 2, 2026

Choose a reason for hiding this comment

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

Most of these changes are from #10472 which I plan to merge first

See GitInfo and GitMetadataTraceInterceptor for the "real" changes here

this.tag = tag;
this.commit = commit;

// GitInfo is reused across many traces, so create entries once and reuse them (see addTags)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Despite the rest of this class being coded defensively for null - as far as I could tell from GitMetadataTraceInterceptor, repositoryURL and commit.getSha() are never null.

That said, I'm happy to add defensive here and in addTags if so desired.

Copy link
Contributor

Choose a reason for hiding this comment

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

In Test Optimization we've seen some edge cases in which commit.getSha() could be null (seems much more unlikely for repositoryURL). We usually have to point them to set the git info through environment variables in those cases. Will the TagMap.Entry.create call have issues with a null object?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good to know.

No, TagMap.Entry.create doesn't support having a null value.
In AgentSpan / DDSpan setting a null tag is translated into a removal.

TagMap does have EntryRemoval for that purpose, but EntryRemoval-s are never stored in TagMap directly just in TagMap.Ledger-s.

I think the solution is just to guard against the null-s. I just wanted to clarify whether or not null-s were expected in the Git related code.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

In another PR, I've tweaked TagMap.Entry.create to allow null & empty String to return a null TagMap.Entry.
And now, AgentSpan / DDSpan ignore being called with a null TagMap.Entry.

So that now allows null to be handled simply in the calling code, I'll update this PR once the other one is merged.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done. Thanks for the review. You were right that commit sha can be null.

return commit;
}

public void addTags(AgentSpan span) {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think eventually I'd like introduce an interface for objects that add tags to span or TagMap.
Since this is the first change of this sort, I decided to share this as is to solicit thoughts on the matter.

@pr-commenter
Copy link

pr-commenter bot commented Feb 2, 2026

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master dougqh/gitinfo-entry-reuse
git_commit_date 1770324636 1770328854
git_commit_sha 13b6001 b5701ef
release_version 1.60.0-SNAPSHOT~13b60019b9 1.59.0-SNAPSHOT~b5701ef310
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1770330530 1770330530
ci_job_id 1405204730 1405204730
ci_pipeline_id 94947737 94947737
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-grk25zd2 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-grk25zd2 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~b5701ef310, baseline=1.60.0-SNAPSHOT~13b60019b9

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.066 s) : 0, 1066349
Total [baseline] (10.807 s) : 0, 10806680
Agent [candidate] (1.065 s) : 0, 1064982
Total [candidate] (10.857 s) : 0, 10856856
section appsec
Agent [baseline] (1.239 s) : 0, 1238742
Total [baseline] (10.955 s) : 0, 10955189
Agent [candidate] (1.24 s) : 0, 1239543
Total [candidate] (11.022 s) : 0, 11021608
section iast
Agent [baseline] (1.233 s) : 0, 1233270
Total [baseline] (11.202 s) : 0, 11202335
Agent [candidate] (1.234 s) : 0, 1233988
Total [candidate] (11.231 s) : 0, 11230915
section profiling
Agent [baseline] (1.19 s) : 0, 1190397
Total [baseline] (11.101 s) : 0, 11101008
Agent [candidate] (1.192 s) : 0, 1192029
Total [candidate] (10.972 s) : 0, 10972133
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.066 s -
Agent appsec 1.239 s 172.393 ms (16.2%)
Agent iast 1.233 s 166.922 ms (15.7%)
Agent profiling 1.19 s 124.048 ms (11.6%)
Total tracing 10.807 s -
Total appsec 10.955 s 148.509 ms (1.4%)
Total iast 11.202 s 395.655 ms (3.7%)
Total profiling 11.101 s 294.328 ms (2.7%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.065 s -
Agent appsec 1.24 s 174.56 ms (16.4%)
Agent iast 1.234 s 169.006 ms (15.9%)
Agent profiling 1.192 s 127.047 ms (11.9%)
Total tracing 10.857 s -
Total appsec 11.022 s 164.752 ms (1.5%)
Total iast 11.231 s 374.059 ms (3.4%)
Total profiling 10.972 s 115.277 ms (1.1%)
gantt
    title petclinic - break down per module: candidate=1.59.0-SNAPSHOT~b5701ef310, baseline=1.60.0-SNAPSHOT~13b60019b9

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.181 ms) : 0, 1181
crashtracking [candidate] (1.178 ms) : 0, 1178
BytebuddyAgent [baseline] (628.651 ms) : 0, 628651
BytebuddyAgent [candidate] (629.047 ms) : 0, 629047
AgentMeter [baseline] (28.877 ms) : 0, 28877
AgentMeter [candidate] (28.907 ms) : 0, 28907
GlobalTracer [baseline] (257.987 ms) : 0, 257987
GlobalTracer [candidate] (257.989 ms) : 0, 257989
AppSec [baseline] (32.922 ms) : 0, 32922
AppSec [candidate] (32.857 ms) : 0, 32857
Debugger [baseline] (63.42 ms) : 0, 63420
Debugger [candidate] (61.354 ms) : 0, 61354
Remote Config [baseline] (605.059 µs) : 0, 605
Remote Config [candidate] (630.092 µs) : 0, 630
Telemetry [baseline] (12.154 ms) : 0, 12154
Telemetry [candidate] (13.135 ms) : 0, 13135
Flare Poller [baseline] (5.383 ms) : 0, 5383
Flare Poller [candidate] (4.574 ms) : 0, 4574
section appsec
crashtracking [baseline] (1.178 ms) : 0, 1178
crashtracking [candidate] (1.178 ms) : 0, 1178
BytebuddyAgent [baseline] (657.661 ms) : 0, 657661
BytebuddyAgent [candidate] (658.921 ms) : 0, 658921
AgentMeter [baseline] (11.857 ms) : 0, 11857
AgentMeter [candidate] (11.931 ms) : 0, 11931
GlobalTracer [baseline] (258.66 ms) : 0, 258660
GlobalTracer [candidate] (259.053 ms) : 0, 259053
IAST [baseline] (25.365 ms) : 0, 25365
IAST [candidate] (25.141 ms) : 0, 25141
AppSec [baseline] (167.857 ms) : 0, 167857
AppSec [candidate] (167.252 ms) : 0, 167252
Debugger [baseline] (67.358 ms) : 0, 67358
Debugger [candidate] (67.409 ms) : 0, 67409
Remote Config [baseline] (686.547 µs) : 0, 687
Remote Config [candidate] (654.946 µs) : 0, 655
Telemetry [baseline] (9.174 ms) : 0, 9174
Telemetry [candidate] (9.118 ms) : 0, 9118
Flare Poller [baseline] (3.594 ms) : 0, 3594
Flare Poller [candidate] (3.637 ms) : 0, 3637
section iast
crashtracking [baseline] (1.176 ms) : 0, 1176
crashtracking [candidate] (1.176 ms) : 0, 1176
BytebuddyAgent [baseline] (796.942 ms) : 0, 796942
BytebuddyAgent [candidate] (797.517 ms) : 0, 797517
AgentMeter [baseline] (11.276 ms) : 0, 11276
AgentMeter [candidate] (11.285 ms) : 0, 11285
GlobalTracer [baseline] (247.941 ms) : 0, 247941
GlobalTracer [candidate] (248.913 ms) : 0, 248913
IAST [baseline] (27.054 ms) : 0, 27054
IAST [candidate] (27.042 ms) : 0, 27042
AppSec [baseline] (32.692 ms) : 0, 32692
AppSec [candidate] (34.657 ms) : 0, 34657
Debugger [baseline] (68.364 ms) : 0, 68364
Debugger [candidate] (65.566 ms) : 0, 65566
Remote Config [baseline] (536.875 µs) : 0, 537
Remote Config [candidate] (526.168 µs) : 0, 526
Telemetry [baseline] (8.682 ms) : 0, 8682
Telemetry [candidate] (8.579 ms) : 0, 8579
Flare Poller [baseline] (3.426 ms) : 0, 3426
Flare Poller [candidate] (3.421 ms) : 0, 3421
section profiling
crashtracking [baseline] (1.223 ms) : 0, 1223
crashtracking [candidate] (1.208 ms) : 0, 1208
BytebuddyAgent [baseline] (682.619 ms) : 0, 682619
BytebuddyAgent [candidate] (683.722 ms) : 0, 683722
AgentMeter [baseline] (8.742 ms) : 0, 8742
AgentMeter [candidate] (8.763 ms) : 0, 8763
GlobalTracer [baseline] (216.165 ms) : 0, 216165
GlobalTracer [candidate] (216.415 ms) : 0, 216415
AppSec [baseline] (32.291 ms) : 0, 32291
AppSec [candidate] (32.417 ms) : 0, 32417
Debugger [baseline] (67.354 ms) : 0, 67354
Debugger [candidate] (67.508 ms) : 0, 67508
Remote Config [baseline] (591.835 µs) : 0, 592
Remote Config [candidate] (601.241 µs) : 0, 601
Telemetry [baseline] (8.843 ms) : 0, 8843
Telemetry [candidate] (8.737 ms) : 0, 8737
Flare Poller [baseline] (3.734 ms) : 0, 3734
Flare Poller [candidate] (3.715 ms) : 0, 3715
ProfilingAgent [baseline] (98.923 ms) : 0, 98923
ProfilingAgent [candidate] (99.088 ms) : 0, 99088
Profiling [baseline] (99.489 ms) : 0, 99489
Profiling [candidate] (99.655 ms) : 0, 99655
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.59.0-SNAPSHOT~b5701ef310, baseline=1.60.0-SNAPSHOT~13b60019b9

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.072 s) : 0, 1071972
Total [baseline] (8.776 s) : 0, 8775870
Agent [candidate] (1.066 s) : 0, 1065563
Total [candidate] (8.74 s) : 0, 8740271
section iast
Agent [baseline] (1.231 s) : 0, 1231067
Total [baseline] (9.367 s) : 0, 9366512
Agent [candidate] (1.24 s) : 0, 1239965
Total [candidate] (9.422 s) : 0, 9421661
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.072 s -
Agent iast 1.231 s 159.095 ms (14.8%)
Total tracing 8.776 s -
Total iast 9.367 s 590.643 ms (6.7%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.066 s -
Agent iast 1.24 s 174.402 ms (16.4%)
Total tracing 8.74 s -
Total iast 9.422 s 681.391 ms (7.8%)
gantt
    title insecure-bank - break down per module: candidate=1.59.0-SNAPSHOT~b5701ef310, baseline=1.60.0-SNAPSHOT~13b60019b9

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.195 ms) : 0, 1195
crashtracking [candidate] (1.173 ms) : 0, 1173
BytebuddyAgent [baseline] (633.73 ms) : 0, 633730
BytebuddyAgent [candidate] (628.758 ms) : 0, 628758
AgentMeter [baseline] (29.15 ms) : 0, 29150
AgentMeter [candidate] (29.157 ms) : 0, 29157
GlobalTracer [baseline] (259.941 ms) : 0, 259941
GlobalTracer [candidate] (258.79 ms) : 0, 258790
AppSec [baseline] (33.153 ms) : 0, 33153
AppSec [candidate] (32.96 ms) : 0, 32960
Debugger [baseline] (60.92 ms) : 0, 60920
Debugger [candidate] (59.608 ms) : 0, 59608
Remote Config [baseline] (622.519 µs) : 0, 623
Remote Config [candidate] (620.74 µs) : 0, 621
Telemetry [baseline] (12.343 ms) : 0, 12343
Telemetry [candidate] (13.879 ms) : 0, 13879
Flare Poller [baseline] (5.378 ms) : 0, 5378
Flare Poller [candidate] (5.38 ms) : 0, 5380
section iast
crashtracking [baseline] (1.184 ms) : 0, 1184
crashtracking [candidate] (1.195 ms) : 0, 1195
BytebuddyAgent [baseline] (795.887 ms) : 0, 795887
BytebuddyAgent [candidate] (802.307 ms) : 0, 802307
AgentMeter [baseline] (11.266 ms) : 0, 11266
AgentMeter [candidate] (11.327 ms) : 0, 11327
GlobalTracer [baseline] (247.822 ms) : 0, 247822
GlobalTracer [candidate] (249.272 ms) : 0, 249272
IAST [baseline] (27.06 ms) : 0, 27060
IAST [candidate] (27.374 ms) : 0, 27374
AppSec [baseline] (33.037 ms) : 0, 33037
AppSec [candidate] (32.293 ms) : 0, 32293
Debugger [baseline] (66.755 ms) : 0, 66755
Debugger [candidate] (68.092 ms) : 0, 68092
Remote Config [baseline] (545.635 µs) : 0, 546
Remote Config [candidate] (540.154 µs) : 0, 540
Telemetry [baseline] (8.766 ms) : 0, 8766
Telemetry [candidate] (8.726 ms) : 0, 8726
Flare Poller [baseline] (3.527 ms) : 0, 3527
Flare Poller [candidate] (3.49 ms) : 0, 3490
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master dougqh/gitinfo-entry-reuse
git_commit_date 1770324636 1770328854
git_commit_sha 13b6001 b5701ef
release_version 1.60.0-SNAPSHOT~13b60019b9 1.59.0-SNAPSHOT~b5701ef310
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1770331128 1770331128
ci_job_id 1405204731 1405204731
ci_pipeline_id 94947737 94947737
cpu_model Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-h72241m8 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-h72241m8 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 5 performance improvements and 2 performance regressions! Performance is the same for 13 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:insecure-bank:iast:high_load worse
[+65.863µs; +158.103µs] or [+2.523%; +6.057%]
same
[-90.481µs; +264.279µs] or [-1.172%; +3.424%]
unstable
[-182.706op/s; +104.144op/s] or [-13.455%; +7.670%]
2.722ms 7.805ms 1318.594op/s 2.610ms 7.718ms 1357.875op/s
scenario:load:insecure-bank:iast_GLOBAL:high_load worse
[+81.655µs; +188.882µs] or [+2.899%; +6.705%]
same
[-79.822µs; +404.547µs] or [-0.985%; +4.993%]
unstable
[-165.600op/s; +92.475op/s] or [-13.088%; +7.309%]
2.952ms 8.264ms 1228.688op/s 2.817ms 8.102ms 1265.250op/s
scenario:load:insecure-bank:profiling:high_load better
[-292.120µs; -137.773µs] or [-14.500%; -6.839%]
unstable
[-1.498ms; -0.621ms] or [-24.201%; -10.044%]
unstable
[+85.075op/s; +522.987op/s] or [+4.848%; +29.803%]
1.800ms 5.128ms 2058.844op/s 2.015ms 6.188ms 1754.812op/s
scenario:load:petclinic:no_agent:high_load better
[-2.111ms; -0.417ms] or [-11.493%; -2.268%]
unstable
[-2872.593µs; +1054.260µs] or [-9.400%; +3.450%]
unstable
[-16.052op/s; +42.115op/s] or [-6.431%; +16.873%]
17.106ms 29.651ms 262.625op/s 18.370ms 30.560ms 249.594op/s
scenario:load:petclinic:code_origins:high_load better
[-1.828ms; -0.840ms] or [-9.613%; -4.419%]
better
[-2.820ms; -1.222ms] or [-9.055%; -3.923%]
unstable
[-10.900op/s; +42.338op/s] or [-4.487%; +17.430%]
17.680ms 29.123ms 258.625op/s 19.014ms 31.144ms 242.906op/s
scenario:load:petclinic:tracing:high_load better
[-1.828ms; -0.715ms] or [-9.580%; -3.744%]
unsure
[-2.067ms; -0.415ms] or [-6.817%; -1.368%]
unstable
[-12.720op/s; +40.658op/s] or [-5.256%; +16.801%]
17.814ms 29.080ms 255.969op/s 19.085ms 30.321ms 242.000op/s
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.59.0-SNAPSHOT~b5701ef310, baseline=1.60.0-SNAPSHOT~13b60019b9
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.286 ms) : 1274, 1297
.   : milestone, 1286,
iast (3.371 ms) : 3323, 3419
.   : milestone, 3371,
iast_FULL (6.261 ms) : 6196, 6326
.   : milestone, 6261,
iast_GLOBAL (3.625 ms) : 3564, 3686
.   : milestone, 3625,
profiling (2.594 ms) : 2568, 2619
.   : milestone, 2594,
tracing (1.899 ms) : 1884, 1915
.   : milestone, 1899,
section candidate
no_agent (1.271 ms) : 1260, 1282
.   : milestone, 1271,
iast (3.474 ms) : 3424, 3524
.   : milestone, 3474,
iast_FULL (6.324 ms) : 6259, 6389
.   : milestone, 6324,
iast_GLOBAL (3.734 ms) : 3670, 3799
.   : milestone, 3734,
profiling (2.199 ms) : 2180, 2218
.   : milestone, 2199,
tracing (1.917 ms) : 1901, 1933
.   : milestone, 1917,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.286 ms [1.274 ms, 1.297 ms] -
iast 3.371 ms [3.323 ms, 3.419 ms] 2.085 ms (162.1%)
iast_FULL 6.261 ms [6.196 ms, 6.326 ms] 4.975 ms (386.9%)
iast_GLOBAL 3.625 ms [3.564 ms, 3.686 ms] 2.339 ms (181.9%)
profiling 2.594 ms [2.568 ms, 2.619 ms] 1.308 ms (101.7%)
tracing 1.899 ms [1.884 ms, 1.915 ms] 613.44 µs (47.7%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.271 ms [1.26 ms, 1.282 ms] -
iast 3.474 ms [3.424 ms, 3.524 ms] 2.203 ms (173.3%)
iast_FULL 6.324 ms [6.259 ms, 6.389 ms] 5.053 ms (397.6%)
iast_GLOBAL 3.734 ms [3.67 ms, 3.799 ms] 2.463 ms (193.8%)
profiling 2.199 ms [2.18 ms, 2.218 ms] 927.848 µs (73.0%)
tracing 1.917 ms [1.901 ms, 1.933 ms] 646.07 µs (50.8%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.59.0-SNAPSHOT~b5701ef310, baseline=1.60.0-SNAPSHOT~13b60019b9
    dateFormat X
    axisFormat %s
section baseline
no_agent (18.7 ms) : 18506, 18893
.   : milestone, 18700,
appsec (19.018 ms) : 18821, 19216
.   : milestone, 19018,
code_origins (19.214 ms) : 19014, 19414
.   : milestone, 19214,
iast (18.243 ms) : 18057, 18429
.   : milestone, 18243,
profiling (20.253 ms) : 20046, 20460
.   : milestone, 20253,
tracing (19.283 ms) : 19086, 19479
.   : milestone, 19283,
section candidate
no_agent (17.765 ms) : 17583, 17947
.   : milestone, 17765,
appsec (19.129 ms) : 18932, 19326
.   : milestone, 19129,
code_origins (18.043 ms) : 17865, 18222
.   : milestone, 18043,
iast (18.345 ms) : 18161, 18529
.   : milestone, 18345,
profiling (19.599 ms) : 19397, 19800
.   : milestone, 19599,
tracing (18.228 ms) : 18047, 18409
.   : milestone, 18228,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 18.7 ms [18.506 ms, 18.893 ms] -
appsec 19.018 ms [18.821 ms, 19.216 ms] 318.589 µs (1.7%)
code_origins 19.214 ms [19.014 ms, 19.414 ms] 514.248 µs (2.8%)
iast 18.243 ms [18.057 ms, 18.429 ms] -456.571 µs (-2.4%)
profiling 20.253 ms [20.046 ms, 20.46 ms] 1.553 ms (8.3%)
tracing 19.283 ms [19.086 ms, 19.479 ms] 582.68 µs (3.1%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 17.765 ms [17.583 ms, 17.947 ms] -
appsec 19.129 ms [18.932 ms, 19.326 ms] 1.364 ms (7.7%)
code_origins 18.043 ms [17.865 ms, 18.222 ms] 277.965 µs (1.6%)
iast 18.345 ms [18.161 ms, 18.529 ms] 579.934 µs (3.3%)
profiling 19.599 ms [19.397 ms, 19.8 ms] 1.833 ms (10.3%)
tracing 18.228 ms [18.047 ms, 18.409 ms] 462.581 µs (2.6%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master dougqh/gitinfo-entry-reuse
git_commit_date 1770324636 1770328854
git_commit_sha 13b6001 b5701ef
release_version 1.60.0-SNAPSHOT~13b60019b9 1.59.0-SNAPSHOT~b5701ef310
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1770330957 1770330957
ci_job_id 1405204732 1405204732
ci_pipeline_id 94947737 94947737
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-1-uskk7htz 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-1-uskk7htz 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~b5701ef310, baseline=1.60.0-SNAPSHOT~13b60019b9
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.474 ms) : 1463, 1486
.   : milestone, 1474,
appsec (3.729 ms) : 3514, 3944
.   : milestone, 3729,
iast (2.253 ms) : 2184, 2322
.   : milestone, 2253,
iast_GLOBAL (2.307 ms) : 2237, 2377
.   : milestone, 2307,
profiling (2.094 ms) : 2039, 2149
.   : milestone, 2094,
tracing (2.064 ms) : 2010, 2117
.   : milestone, 2064,
section candidate
no_agent (1.473 ms) : 1461, 1484
.   : milestone, 1473,
appsec (3.763 ms) : 3543, 3984
.   : milestone, 3763,
iast (2.258 ms) : 2188, 2327
.   : milestone, 2258,
iast_GLOBAL (2.289 ms) : 2220, 2359
.   : milestone, 2289,
profiling (2.084 ms) : 2029, 2139
.   : milestone, 2084,
tracing (2.074 ms) : 2020, 2128
.   : milestone, 2074,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.474 ms [1.463 ms, 1.486 ms] -
appsec 3.729 ms [3.514 ms, 3.944 ms] 2.255 ms (152.9%)
iast 2.253 ms [2.184 ms, 2.322 ms] 778.534 µs (52.8%)
iast_GLOBAL 2.307 ms [2.237 ms, 2.377 ms] 832.502 µs (56.5%)
profiling 2.094 ms [2.039 ms, 2.149 ms] 619.876 µs (42.0%)
tracing 2.064 ms [2.01 ms, 2.117 ms] 589.714 µs (40.0%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.473 ms [1.461 ms, 1.484 ms] -
appsec 3.763 ms [3.543 ms, 3.984 ms] 2.29 ms (155.5%)
iast 2.258 ms [2.188 ms, 2.327 ms] 784.596 µs (53.3%)
iast_GLOBAL 2.289 ms [2.22 ms, 2.359 ms] 816.364 µs (55.4%)
profiling 2.084 ms [2.029 ms, 2.139 ms] 611.174 µs (41.5%)
tracing 2.074 ms [2.02 ms, 2.128 ms] 601.11 µs (40.8%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.59.0-SNAPSHOT~b5701ef310, baseline=1.60.0-SNAPSHOT~13b60019b9
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.601 s) : 15601000, 15601000
.   : milestone, 15601000,
appsec (14.985 s) : 14985000, 14985000
.   : milestone, 14985000,
iast (18.312 s) : 18312000, 18312000
.   : milestone, 18312000,
iast_GLOBAL (17.808 s) : 17808000, 17808000
.   : milestone, 17808000,
profiling (15.032 s) : 15032000, 15032000
.   : milestone, 15032000,
tracing (14.831 s) : 14831000, 14831000
.   : milestone, 14831000,
section candidate
no_agent (14.77 s) : 14770000, 14770000
.   : milestone, 14770000,
appsec (15.017 s) : 15017000, 15017000
.   : milestone, 15017000,
iast (18.166 s) : 18166000, 18166000
.   : milestone, 18166000,
iast_GLOBAL (17.931 s) : 17931000, 17931000
.   : milestone, 17931000,
profiling (14.93 s) : 14930000, 14930000
.   : milestone, 14930000,
tracing (14.842 s) : 14842000, 14842000
.   : milestone, 14842000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.601 s [15.601 s, 15.601 s] -
appsec 14.985 s [14.985 s, 14.985 s] -616.0 ms (-3.9%)
iast 18.312 s [18.312 s, 18.312 s] 2.711 s (17.4%)
iast_GLOBAL 17.808 s [17.808 s, 17.808 s] 2.207 s (14.1%)
profiling 15.032 s [15.032 s, 15.032 s] -569.0 ms (-3.6%)
tracing 14.831 s [14.831 s, 14.831 s] -770.0 ms (-4.9%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 14.77 s [14.77 s, 14.77 s] -
appsec 15.017 s [15.017 s, 15.017 s] 247.0 ms (1.7%)
iast 18.166 s [18.166 s, 18.166 s] 3.396 s (23.0%)
iast_GLOBAL 17.931 s [17.931 s, 17.931 s] 3.161 s (21.4%)
profiling 14.93 s [14.93 s, 14.93 s] 160.0 ms (1.1%)
tracing 14.842 s [14.842 s, 14.842 s] 72.0 ms (0.5%)

this.tag = tag;
this.commit = commit;

// GitInfo is reused across many traces, so create entries once and reuse them (see addTags)
Copy link
Contributor

Choose a reason for hiding this comment

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

In Test Optimization we've seen some edge cases in which commit.getSha() could be null (seems much more unlikely for repositoryURL). We usually have to point them to set the git info through environment variables in those cases. Will the TagMap.Entry.create call have issues with a null object?

dougqh and others added 14 commits February 3, 2026 13:21
Co-authored-by: Alexey Kuznetsov <alexey.kuznetsov@datadoghq.com>
Using DisplayName to improve readability instead of separating prefix / suffix with underscore
- setMetric not guards against null
- TagMap.create now allows null - and returns null in response

The intention is to let null values benignly flow through TagMap.Entry.create into AgentSpan.setTag / setMetric
Fixing oversight of creating newAnyEntry rather newObjectEntry in create(tag, CharSequence)
Changed tests to use camel case - using DisplayName for test report readabilty
…aDog/dd-trace-java into dougqh/fdirect-apis-for-tagmap-entry
The null handling here now relies on nulls benignly passing through TagMap.Entry.create and AgentSpan.setTag(TagMap.Entry)
@dougqh dougqh enabled auto-merge (squash) February 5, 2026 20:33
@dougqh dougqh merged commit d8f2599 into master Feb 5, 2026
545 checks passed
@dougqh dougqh deleted the dougqh/gitinfo-entry-reuse branch February 5, 2026 22:57
@github-actions github-actions bot added this to the 1.60.0 milestone Feb 5, 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.

2 participants