Skip to content

Conversation

@jpbempel
Copy link
Member

@jpbempel jpbempel commented Jan 5, 2026

What Does This Do

if a source file has a large number of inner classes, putting a line probe will trigger the retransformation of all inner classes individually which can lead to significant overhead (retransformation is Stop-The-World event). The api instrumentation::retransformClasses can take a list of classes that are retransformed in a single STW event which armortized the cost. However we put a hard limit of number of inner classes to avoid long STW event in case of generated code.

Motivation

Additional Notes

Did some tests about the overhead of retransformClasses:

for 100 inner classes
individually: 600ms
batch: 34ms

for 1000 inner classes
individually: 5500ms
batch: 260ms

Contributor Checklist

Jira ticket: DEBUG-4890

if a source file has a large number of inner classes, putting a
line probe will trigger the retransformation of all inner classes
individually which can lead to significant overhead (retransformation
is Stop-The-World event). The api instrumentation::retransformClasses
can take a list of classes that are retransformed in a single STW
event which armortized the cost. However we put a hard limit of
number of inner classes to avoid long STW event in case of generated
code.
@jpbempel jpbempel requested a review from a team as a code owner January 5, 2026 08:44
@jpbempel jpbempel requested review from ojung and removed request for a team January 5, 2026 08:44
@jpbempel jpbempel added the comp: debugger Dynamic Instrumentation label Jan 5, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Jan 5, 2026

Hi! 👋 Thanks for your pull request! 🎉

To help us review it, please make sure to:

  • Add at least one type, and one component or instrumentation label to the pull request

If you need help, please check our contributing guidelines.

@jpbempel jpbempel added the type: bug Bug report and fix label Jan 5, 2026
@pr-commenter
Copy link

pr-commenter bot commented Jan 5, 2026

Debugger benchmarks

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
ci_job_date 1767603107 1767603453
end_time 2026-01-05T08:53:08 2026-01-05T08:58:54
git_branch master jpbempel/fix-lot-inner-classes
git_commit_sha b4a047e 4b43b45
start_time 2026-01-05T08:51:48 2026-01-05T08:57:34
See matching parameters
Baseline Candidate
ci_job_id 1325723603 1325723603
ci_pipeline_id 88861006 88861006
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
git_commit_date 1767602523 1767602523

Summary

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

See unchanged results
scenario Δ mean agg_http_req_duration_min Δ mean agg_http_req_duration_p50 Δ mean agg_http_req_duration_p75 Δ mean agg_http_req_duration_p99 Δ mean throughput
scenario:noprobe unstable
[-32.654µs; +16.910µs] or [-11.608%; +6.011%]
unstable
[-47.657µs; +24.204µs] or [-14.702%; +7.467%]
unstable
[-61.471µs; +33.492µs] or [-18.078%; +9.850%]
unstable
[-48.150µs; +160.015µs] or [-4.941%; +16.421%]
same
scenario:basic same same same unstable
[-63.311µs; +161.141µs] or [-8.101%; +20.619%]
unstable
[-73.317op/s; +215.564op/s] or [-2.786%; +8.191%]
scenario:loop same same unsure
[-13.881µs; -3.416µs] or [-0.154%; -0.038%]
same same
Request duration reports for reports
gantt
    title reports - request duration [CI 0.99] : candidate=None, baseline=None
    dateFormat X
    axisFormat %s
section baseline
noprobe (324.148 µs) : 282, 366
.   : milestone, 324,
basic (279.552 µs) : 273, 286
.   : milestone, 280,
loop (8.965 ms) : 8960, 8969
.   : milestone, 8965,
section candidate
noprobe (312.421 µs) : 289, 336
.   : milestone, 312,
basic (278.266 µs) : 272, 285
.   : milestone, 278,
loop (8.964 ms) : 8959, 8968
.   : milestone, 8964,
Loading
  • baseline results
Scenario Request median duration [CI 0.99]
noprobe 324.148 µs [281.957 µs, 366.339 µs]
basic 279.552 µs [273.114 µs, 285.989 µs]
loop 8.965 ms [8.96 ms, 8.969 ms]
  • candidate results
Scenario Request median duration [CI 0.99]
noprobe 312.421 µs [288.761 µs, 336.082 µs]
basic 278.266 µs [271.58 µs, 284.953 µs]
loop 8.964 ms [8.959 ms, 8.968 ms]

@pr-commenter
Copy link

pr-commenter bot commented Jan 5, 2026

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master jpbempel/fix-lot-inner-classes
git_commit_date 1766503833 1767602523
git_commit_sha ab049bd 4b43b45
release_version 1.58.0-SNAPSHOT~ab049bd23d 1.58.0-SNAPSHOT~4b43b45cd9
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1767604294 1767604294
ci_job_id 1325723591 1325723591
ci_pipeline_id 88861006 88861006
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-crinjmvu 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-crinjmvu 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 57 metrics, 8 unstable metrics.

Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.58.0-SNAPSHOT~4b43b45cd9, baseline=1.58.0-SNAPSHOT~ab049bd23d

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.089 s) : 0, 1088880
Total [baseline] (8.791 s) : 0, 8790519
Agent [candidate] (1.085 s) : 0, 1084769
Total [candidate] (8.746 s) : 0, 8746151
section iast
Agent [baseline] (1.234 s) : 0, 1233771
Total [baseline] (9.322 s) : 0, 9322353
Agent [candidate] (1.222 s) : 0, 1222429
Total [candidate] (9.34 s) : 0, 9339504
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.089 s -
Agent iast 1.234 s 144.891 ms (13.3%)
Total tracing 8.791 s -
Total iast 9.322 s 531.835 ms (6.1%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.085 s -
Agent iast 1.222 s 137.66 ms (12.7%)
Total tracing 8.746 s -
Total iast 9.34 s 593.352 ms (6.8%)
gantt
    title insecure-bank - break down per module: candidate=1.58.0-SNAPSHOT~4b43b45cd9, baseline=1.58.0-SNAPSHOT~ab049bd23d

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.191 ms) : 0, 1191
crashtracking [candidate] (1.193 ms) : 0, 1193
BytebuddyAgent [baseline] (653.826 ms) : 0, 653826
BytebuddyAgent [candidate] (651.485 ms) : 0, 651485
GlobalTracer [baseline] (284.103 ms) : 0, 284103
GlobalTracer [candidate] (282.609 ms) : 0, 282609
AppSec [baseline] (33.002 ms) : 0, 33002
AppSec [candidate] (32.713 ms) : 0, 32713
Debugger [baseline] (67.671 ms) : 0, 67671
Debugger [candidate] (67.859 ms) : 0, 67859
Remote Config [baseline] (614.268 µs) : 0, 614
Remote Config [candidate] (619.512 µs) : 0, 620
Telemetry [baseline] (9.085 ms) : 0, 9085
Telemetry [candidate] (9.047 ms) : 0, 9047
Flare Poller [baseline] (3.798 ms) : 0, 3798
Flare Poller [candidate] (3.759 ms) : 0, 3759
section iast
crashtracking [baseline] (1.194 ms) : 0, 1194
crashtracking [candidate] (1.193 ms) : 0, 1193
BytebuddyAgent [baseline] (799.535 ms) : 0, 799535
BytebuddyAgent [candidate] (791.738 ms) : 0, 791738
GlobalTracer [baseline] (257.247 ms) : 0, 257247
GlobalTracer [candidate] (255.12 ms) : 0, 255120
AppSec [baseline] (33.78 ms) : 0, 33780
AppSec [candidate] (33.503 ms) : 0, 33503
Debugger [baseline] (66.1 ms) : 0, 66100
Debugger [candidate] (65.648 ms) : 0, 65648
Remote Config [baseline] (605.823 µs) : 0, 606
Remote Config [candidate] (620.953 µs) : 0, 621
Telemetry [baseline] (8.643 ms) : 0, 8643
Telemetry [candidate] (8.485 ms) : 0, 8485
Flare Poller [baseline] (3.544 ms) : 0, 3544
Flare Poller [candidate] (3.551 ms) : 0, 3551
IAST [baseline] (27.406 ms) : 0, 27406
IAST [candidate] (27.071 ms) : 0, 27071
Loading
Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.58.0-SNAPSHOT~4b43b45cd9, baseline=1.58.0-SNAPSHOT~ab049bd23d

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.088 s) : 0, 1088124
Total [baseline] (11.033 s) : 0, 11032679
Agent [candidate] (1.086 s) : 0, 1086093
Total [candidate] (10.737 s) : 0, 10736925
section appsec
Agent [baseline] (1.27 s) : 0, 1269605
Total [baseline] (10.928 s) : 0, 10927935
Agent [candidate] (1.267 s) : 0, 1266968
Total [candidate] (10.917 s) : 0, 10917375
section iast
Agent [baseline] (1.237 s) : 0, 1237354
Total [baseline] (11.295 s) : 0, 11295441
Agent [candidate] (1.226 s) : 0, 1226256
Total [candidate] (11.11 s) : 0, 11110319
section profiling
Agent [baseline] (1.207 s) : 0, 1207038
Total [baseline] (11.036 s) : 0, 11036169
Agent [candidate] (1.211 s) : 0, 1211376
Total [candidate] (10.943 s) : 0, 10943123
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.088 s -
Agent appsec 1.27 s 181.481 ms (16.7%)
Agent iast 1.237 s 149.23 ms (13.7%)
Agent profiling 1.207 s 118.915 ms (10.9%)
Total tracing 11.033 s -
Total appsec 10.928 s -104.744 ms (-0.9%)
Total iast 11.295 s 262.762 ms (2.4%)
Total profiling 11.036 s 3.49 ms (0.0%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.086 s -
Agent appsec 1.267 s 180.875 ms (16.7%)
Agent iast 1.226 s 140.163 ms (12.9%)
Agent profiling 1.211 s 125.282 ms (11.5%)
Total tracing 10.737 s -
Total appsec 10.917 s 180.45 ms (1.7%)
Total iast 11.11 s 373.394 ms (3.5%)
Total profiling 10.943 s 206.198 ms (1.9%)
gantt
    title petclinic - break down per module: candidate=1.58.0-SNAPSHOT~4b43b45cd9, baseline=1.58.0-SNAPSHOT~ab049bd23d

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.188 ms) : 0, 1188
crashtracking [candidate] (1.188 ms) : 0, 1188
BytebuddyAgent [baseline] (653.413 ms) : 0, 653413
BytebuddyAgent [candidate] (652.332 ms) : 0, 652332
GlobalTracer [baseline] (282.991 ms) : 0, 282991
GlobalTracer [candidate] (282.508 ms) : 0, 282508
AppSec [baseline] (32.877 ms) : 0, 32877
AppSec [candidate] (32.81 ms) : 0, 32810
Debugger [baseline] (68.324 ms) : 0, 68324
Debugger [candidate] (68.365 ms) : 0, 68365
Remote Config [baseline] (629.966 µs) : 0, 630
Remote Config [candidate] (636.258 µs) : 0, 636
Telemetry [baseline] (9.201 ms) : 0, 9201
Telemetry [candidate] (8.974 ms) : 0, 8974
Flare Poller [baseline] (3.854 ms) : 0, 3854
Flare Poller [candidate] (3.733 ms) : 0, 3733
section appsec
crashtracking [baseline] (1.187 ms) : 0, 1187
crashtracking [candidate] (1.197 ms) : 0, 1197
BytebuddyAgent [baseline] (695.862 ms) : 0, 695862
BytebuddyAgent [candidate] (693.092 ms) : 0, 693092
GlobalTracer [baseline] (258.441 ms) : 0, 258441
GlobalTracer [candidate] (258.141 ms) : 0, 258141
AppSec [baseline] (174.528 ms) : 0, 174528
AppSec [candidate] (173.635 ms) : 0, 173635
Debugger [baseline] (65.895 ms) : 0, 65895
Debugger [candidate] (66.878 ms) : 0, 66878
Remote Config [baseline] (758.214 µs) : 0, 758
Remote Config [candidate] (778.135 µs) : 0, 778
Telemetry [baseline] (9.258 ms) : 0, 9258
Telemetry [candidate] (9.419 ms) : 0, 9419
Flare Poller [baseline] (3.69 ms) : 0, 3690
Flare Poller [candidate] (3.725 ms) : 0, 3725
IAST [baseline] (24.453 ms) : 0, 24453
IAST [candidate] (24.632 ms) : 0, 24632
section iast
crashtracking [baseline] (1.214 ms) : 0, 1214
crashtracking [candidate] (1.196 ms) : 0, 1196
BytebuddyAgent [baseline] (800.165 ms) : 0, 800165
BytebuddyAgent [candidate] (793.786 ms) : 0, 793786
GlobalTracer [baseline] (258.541 ms) : 0, 258541
GlobalTracer [candidate] (256.1 ms) : 0, 256100
AppSec [baseline] (34.7 ms) : 0, 34700
AppSec [candidate] (33.429 ms) : 0, 33429
Debugger [baseline] (66.562 ms) : 0, 66562
Debugger [candidate] (66.452 ms) : 0, 66452
Remote Config [baseline] (611.513 µs) : 0, 612
Remote Config [candidate] (579.49 µs) : 0, 579
Telemetry [baseline] (8.734 ms) : 0, 8734
Telemetry [candidate] (8.518 ms) : 0, 8518
Flare Poller [baseline] (3.617 ms) : 0, 3617
Flare Poller [candidate] (3.447 ms) : 0, 3447
IAST [baseline] (27.567 ms) : 0, 27567
IAST [candidate] (27.205 ms) : 0, 27205
section profiling
crashtracking [baseline] (1.214 ms) : 0, 1214
crashtracking [candidate] (1.216 ms) : 0, 1216
BytebuddyAgent [baseline] (703.948 ms) : 0, 703948
BytebuddyAgent [candidate] (707.964 ms) : 0, 707964
GlobalTracer [baseline] (220.554 ms) : 0, 220554
GlobalTracer [candidate] (221.351 ms) : 0, 221351
AppSec [baseline] (32.037 ms) : 0, 32037
AppSec [candidate] (32.3 ms) : 0, 32300
Debugger [baseline] (68.389 ms) : 0, 68389
Debugger [candidate] (68.227 ms) : 0, 68227
Remote Config [baseline] (646.649 µs) : 0, 647
Remote Config [candidate] (637.991 µs) : 0, 638
Telemetry [baseline] (8.841 ms) : 0, 8841
Telemetry [candidate] (8.807 ms) : 0, 8807
Flare Poller [baseline] (3.711 ms) : 0, 3711
Flare Poller [candidate] (3.698 ms) : 0, 3698
ProfilingAgent [baseline] (97.798 ms) : 0, 97798
ProfilingAgent [candidate] (97.329 ms) : 0, 97329
Profiling [baseline] (98.384 ms) : 0, 98384
Profiling [candidate] (97.911 ms) : 0, 97911
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master jpbempel/fix-lot-inner-classes
git_commit_date 1766503833 1767602523
git_commit_sha ab049bd 4b43b45
release_version 1.58.0-SNAPSHOT~ab049bd23d 1.58.0-SNAPSHOT~4b43b45cd9
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1767604869 1767604869
ci_job_id 1325723593 1325723593
ci_pipeline_id 88861006 88861006
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-8iw38tnk 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-8iw38tnk 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 2 performance regressions! Performance is the same for 16 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_GLOBAL:high_load worse
[+64.979µs; +181.734µs] or [+2.309%; +6.458%]
same
[-83.953µs; +307.004µs] or [-1.043%; +3.814%]
unstable
[-149.568op/s; +95.005op/s] or [-11.788%; +7.488%]
2.937ms 8.160ms 1241.531op/s 2.814ms 8.048ms 1268.812op/s
scenario:load:petclinic:no_agent:high_load worse
[+1.044ms; +2.596ms] or [+6.352%; +15.787%]
unstable
[+0.641ms; +3.648ms] or [+2.288%; +13.015%]
unstable
[-50.749op/s; +6.436op/s] or [-18.509%; +2.347%]
18.264ms 30.172ms 252.031op/s 16.443ms 28.027ms 274.188op/s
scenario:load:petclinic:profiling:high_load better
[-1.775ms; -0.740ms] or [-9.123%; -3.805%]
better
[-2.477ms; -0.832ms] or [-7.873%; -2.645%]
unstable
[-9.184op/s; +39.684op/s] or [-3.893%; +16.822%]
18.198ms 29.811ms 251.156op/s 19.455ms 31.465ms 235.906op/s
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.58.0-SNAPSHOT~4b43b45cd9, baseline=1.58.0-SNAPSHOT~ab049bd23d
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.214 ms) : 1202, 1226
.   : milestone, 1214,
iast (3.14 ms) : 3099, 3181
.   : milestone, 3140,
iast_FULL (5.837 ms) : 5779, 5895
.   : milestone, 5837,
iast_GLOBAL (3.614 ms) : 3555, 3673
.   : milestone, 3614,
profiling (1.976 ms) : 1959, 1993
.   : milestone, 1976,
tracing (1.775 ms) : 1760, 1790
.   : milestone, 1775,
section candidate
no_agent (1.196 ms) : 1184, 1207
.   : milestone, 1196,
iast (3.25 ms) : 3205, 3296
.   : milestone, 3250,
iast_FULL (5.715 ms) : 5658, 5772
.   : milestone, 5715,
iast_GLOBAL (3.695 ms) : 3641, 3749
.   : milestone, 3695,
profiling (1.918 ms) : 1902, 1935
.   : milestone, 1918,
tracing (1.825 ms) : 1810, 1839
.   : milestone, 1825,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.214 ms [1.202 ms, 1.226 ms] -
iast 3.14 ms [3.099 ms, 3.181 ms] 1.926 ms (158.6%)
iast_FULL 5.837 ms [5.779 ms, 5.895 ms] 4.623 ms (380.7%)
iast_GLOBAL 3.614 ms [3.555 ms, 3.673 ms] 2.399 ms (197.6%)
profiling 1.976 ms [1.959 ms, 1.993 ms] 761.991 µs (62.7%)
tracing 1.775 ms [1.76 ms, 1.79 ms] 560.862 µs (46.2%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.196 ms [1.184 ms, 1.207 ms] -
iast 3.25 ms [3.205 ms, 3.296 ms] 2.055 ms (171.9%)
iast_FULL 5.715 ms [5.658 ms, 5.772 ms] 4.519 ms (378.0%)
iast_GLOBAL 3.695 ms [3.641 ms, 3.749 ms] 2.499 ms (209.0%)
profiling 1.918 ms [1.902 ms, 1.935 ms] 722.825 µs (60.5%)
tracing 1.825 ms [1.81 ms, 1.839 ms] 628.929 µs (52.6%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.58.0-SNAPSHOT~4b43b45cd9, baseline=1.58.0-SNAPSHOT~ab049bd23d
    dateFormat X
    axisFormat %s
section baseline
no_agent (17.013 ms) : 16845, 17182
.   : milestone, 17013,
appsec (18.363 ms) : 18178, 18548
.   : milestone, 18363,
code_origins (17.595 ms) : 17422, 17768
.   : milestone, 17595,
iast (18.04 ms) : 17859, 18220
.   : milestone, 18040,
profiling (19.788 ms) : 19583, 19993
.   : milestone, 19788,
tracing (17.871 ms) : 17694, 18047
.   : milestone, 17871,
section candidate
no_agent (18.516 ms) : 18326, 18705
.   : milestone, 18516,
appsec (18.505 ms) : 18317, 18693
.   : milestone, 18505,
code_origins (17.858 ms) : 17679, 18037
.   : milestone, 17858,
iast (17.692 ms) : 17517, 17866
.   : milestone, 17692,
profiling (18.582 ms) : 18396, 18768
.   : milestone, 18582,
tracing (17.788 ms) : 17611, 17965
.   : milestone, 17788,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 17.013 ms [16.845 ms, 17.182 ms] -
appsec 18.363 ms [18.178 ms, 18.548 ms] 1.35 ms (7.9%)
code_origins 17.595 ms [17.422 ms, 17.768 ms] 581.777 µs (3.4%)
iast 18.04 ms [17.859 ms, 18.22 ms] 1.026 ms (6.0%)
profiling 19.788 ms [19.583 ms, 19.993 ms] 2.774 ms (16.3%)
tracing 17.871 ms [17.694 ms, 18.047 ms] 857.197 µs (5.0%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 18.516 ms [18.326 ms, 18.705 ms] -
appsec 18.505 ms [18.317 ms, 18.693 ms] -10.737 µs (-0.1%)
code_origins 17.858 ms [17.679 ms, 18.037 ms] -657.676 µs (-3.6%)
iast 17.692 ms [17.517 ms, 17.866 ms] -824.092 µs (-4.5%)
profiling 18.582 ms [18.396 ms, 18.768 ms] 66.586 µs (0.4%)
tracing 17.788 ms [17.611 ms, 17.965 ms] -727.537 µs (-3.9%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master jpbempel/fix-lot-inner-classes
git_commit_date 1766503833 1767602523
git_commit_sha ab049bd 4b43b45
release_version 1.58.0-SNAPSHOT~ab049bd23d 1.58.0-SNAPSHOT~4b43b45cd9
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1767604524 1767604524
ci_job_id 1325723595 1325723595
ci_pipeline_id 88861006 88861006
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-d0dfuy38 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-d0dfuy38 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 10 metrics, 2 unstable metrics.

Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.58.0-SNAPSHOT~4b43b45cd9, baseline=1.58.0-SNAPSHOT~ab049bd23d
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.636 s) : 15636000, 15636000
.   : milestone, 15636000,
appsec (14.849 s) : 14849000, 14849000
.   : milestone, 14849000,
iast (18.07 s) : 18070000, 18070000
.   : milestone, 18070000,
iast_GLOBAL (17.767 s) : 17767000, 17767000
.   : milestone, 17767000,
profiling (14.942 s) : 14942000, 14942000
.   : milestone, 14942000,
tracing (14.851 s) : 14851000, 14851000
.   : milestone, 14851000,
section candidate
no_agent (15.526 s) : 15526000, 15526000
.   : milestone, 15526000,
appsec (14.499 s) : 14499000, 14499000
.   : milestone, 14499000,
iast (17.918 s) : 17918000, 17918000
.   : milestone, 17918000,
iast_GLOBAL (17.978 s) : 17978000, 17978000
.   : milestone, 17978000,
profiling (14.956 s) : 14956000, 14956000
.   : milestone, 14956000,
tracing (14.684 s) : 14684000, 14684000
.   : milestone, 14684000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.636 s [15.636 s, 15.636 s] -
appsec 14.849 s [14.849 s, 14.849 s] -787.0 ms (-5.0%)
iast 18.07 s [18.07 s, 18.07 s] 2.434 s (15.6%)
iast_GLOBAL 17.767 s [17.767 s, 17.767 s] 2.131 s (13.6%)
profiling 14.942 s [14.942 s, 14.942 s] -694.0 ms (-4.4%)
tracing 14.851 s [14.851 s, 14.851 s] -785.0 ms (-5.0%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.526 s [15.526 s, 15.526 s] -
appsec 14.499 s [14.499 s, 14.499 s] -1.027 s (-6.6%)
iast 17.918 s [17.918 s, 17.918 s] 2.392 s (15.4%)
iast_GLOBAL 17.978 s [17.978 s, 17.978 s] 2.452 s (15.8%)
profiling 14.956 s [14.956 s, 14.956 s] -570.0 ms (-3.7%)
tracing 14.684 s [14.684 s, 14.684 s] -842.0 ms (-5.4%)
Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.58.0-SNAPSHOT~4b43b45cd9, baseline=1.58.0-SNAPSHOT~ab049bd23d
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.479 ms) : 1468, 1491
.   : milestone, 1479,
appsec (3.727 ms) : 3506, 3948
.   : milestone, 3727,
iast (2.218 ms) : 2153, 2283
.   : milestone, 2218,
iast_GLOBAL (2.258 ms) : 2194, 2323
.   : milestone, 2258,
profiling (2.498 ms) : 2335, 2660
.   : milestone, 2498,
tracing (2.066 ms) : 2014, 2117
.   : milestone, 2066,
section candidate
no_agent (1.475 ms) : 1463, 1486
.   : milestone, 1475,
appsec (3.746 ms) : 3528, 3964
.   : milestone, 3746,
iast (2.219 ms) : 2154, 2283
.   : milestone, 2219,
iast_GLOBAL (2.277 ms) : 2212, 2342
.   : milestone, 2277,
profiling (2.06 ms) : 2008, 2113
.   : milestone, 2060,
tracing (2.057 ms) : 2006, 2108
.   : milestone, 2057,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.479 ms [1.468 ms, 1.491 ms] -
appsec 3.727 ms [3.506 ms, 3.948 ms] 2.248 ms (151.9%)
iast 2.218 ms [2.153 ms, 2.283 ms] 738.524 µs (49.9%)
iast_GLOBAL 2.258 ms [2.194 ms, 2.323 ms] 778.788 µs (52.6%)
profiling 2.498 ms [2.335 ms, 2.66 ms] 1.018 ms (68.8%)
tracing 2.066 ms [2.014 ms, 2.117 ms] 586.121 µs (39.6%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.475 ms [1.463 ms, 1.486 ms] -
appsec 3.746 ms [3.528 ms, 3.964 ms] 2.272 ms (154.0%)
iast 2.219 ms [2.154 ms, 2.283 ms] 744.023 µs (50.5%)
iast_GLOBAL 2.277 ms [2.212 ms, 2.342 ms] 801.994 µs (54.4%)
profiling 2.06 ms [2.008 ms, 2.113 ms] 585.637 µs (39.7%)
tracing 2.057 ms [2.006 ms, 2.108 ms] 582.045 µs (39.5%)


private void retransformClasses(List<Class<?>> classesToBeTransformed) {
int classCount = classesToBeTransformed.size();
if (classCount <= 10) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Why 10? What the benefit here?

Copy link
Member Author

@jpbempel jpbempel Jan 5, 2026

Choose a reason for hiding this comment

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

if a retransformation fails it is easier to pinpoint which class is failing that way (individually). here we consider that if we have more than 10 the classes belong to same "family" (here the inner classes).

} else if (classCount <= 1000) {
retransformClassesAtOnce(classesToBeTransformed);
} else {
throw new IllegalStateException("Too many classes to retransform: " + classCount);
Copy link
Member

Choose a reason for hiding this comment

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

What happens from the users perspective when there are more than 1,000 classes to transform? Is this raised as an instrumentation error?

Copy link
Member Author

Choose a reason for hiding this comment

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

yes

@jpbempel jpbempel merged commit 5627283 into master Jan 5, 2026
573 of 577 checks passed
@jpbempel jpbempel deleted the jpbempel/fix-lot-inner-classes branch January 5, 2026 13:07
@github-actions github-actions bot added this to the 1.58.0 milestone Jan 5, 2026
@mcculls mcculls changed the title Fix re-transformation high number of inner classes Batch re-transformations when there are a high number of inner classes Jan 6, 2026
@mcculls mcculls added the tag: performance Performance related changes label Jan 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: debugger Dynamic Instrumentation tag: performance Performance related changes type: bug Bug report and fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants