Skip to content

Conversation

@amarziali
Copy link
Contributor

@amarziali amarziali commented Oct 8, 2025

What Does This Do

Replace NonBlockingHashMap with JDK equivalent. The jctools class, despite being a little more performant, is making use of Unsafe that's not future proof.

I ran benchmarks with JDK 1.8 and 21

JDK 1.8
Benchmark                                            Mode  Cnt  Score   Error  Units
NonBlockingHashMapBenchmark.benchConcurrentHashMap   avgt       1.153          us/op
NonBlockingHashMapBenchmark.benchNonBlockingHashMap  avgt       1.457          us/op

JDK 21
Benchmark                                            Mode  Cnt  Score   Error  Units
NonBlockingHashMapBenchmark.benchConcurrentHashMap   avgt       1.088          us/op
NonBlockingHashMapBenchmark.benchNonBlockingHashMap  avgt       1.278          us/op

Motivation

Additional Notes

Contributor Checklist

Jira ticket: [PROJ-IDENT]

@amarziali amarziali requested review from a team as code owners October 8, 2025 14:36
@amarziali amarziali requested a review from smola October 8, 2025 14:36
@amarziali amarziali enabled auto-merge (squash) October 8, 2025 14:42
public final long metadataId;

private final NonBlockingHashMapLong<String> eventTypeNameMapBacking =
new NonBlockingHashMapLong<>(256);
Copy link
Contributor

@mcculls mcculls Oct 8, 2025

Choose a reason for hiding this comment

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

One key differentiator of NonBlockingHashMapLong is it supports primitive long keys, whereas ConcurrentHashMap will box primitive keys into Long.

Could we add a benchmark comparing NonBlockingHashMapLong<String> with ConcurrentHashMap<Long, String> to see what effect that has? Note we should make sure we test long values outside of the cached range of -128 to 127

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Right. Let me test the side effect of unboxing

Copy link
Contributor

Choose a reason for hiding this comment

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

Also worth checking with profiling where the getEventTypeNameMap method is used, because I can't find a caller in the current codebase. If it's not used then do we need to keep this map at all?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

About the put operation I don't think nothing will change since I see later on:

      eventTypeNameMapBacking.put(Long.parseLong(id), name);

I cannot see any caller as well...let me ask around or dig more about this

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ok I got confirmation that it's unused. Actually the whole package can be removed apparently. Now in this PR I limited to removing that map. I will open another PR to delete the package

Comment on lines +45 to +52
@Setup(Level.Iteration)
public void setup() {
nonBlockingHashMap = new NonBlockingHashMap(512);
concurrentHashMap = new ConcurrentHashMap(512);
for (int i = 0; i < 256; i++) {
nonBlockingHashMap.put("test" + i, "test");
concurrentHashMap.put("test" + i, "test");
}
Copy link
Contributor

Choose a reason for hiding this comment

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

How about to test Map<MetricKey, Object> as it is an actual use case?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

is the key influencing the test?

Copy link
Contributor

Choose a reason for hiding this comment

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

Not sure, but it will mimic real usage I believe...

Copy link
Contributor

Choose a reason for hiding this comment

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

I think it's not interesting in this case as we will measure the MetricKey code itself. While "test" + i becomes a String.

@datadog-datadog-prod-us1
Copy link
Contributor

datadog-datadog-prod-us1 bot commented Oct 8, 2025

🎯 Code Coverage
Patch Coverage: 100.00%
Total Coverage: 63.40% (+3.70%)

View detailed report

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 81fe323 | Docs | Was this helpful? Give us feedback!

@pr-commenter
Copy link

pr-commenter bot commented Oct 8, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/jctools
git_commit_date 1759924549 1759936569
git_commit_sha a56894b 81fe323
release_version 1.55.0-SNAPSHOT~a56894b54b 1.55.0-SNAPSHOT~81fe323462
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1759938416 1759938416
ci_job_id 1169788768 1169788768
ci_pipeline_id 78743279 78743279
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-dmij3uig 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-dmij3uig 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 59 metrics, 6 unstable metrics.

Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.55.0-SNAPSHOT~81fe323462, baseline=1.55.0-SNAPSHOT~a56894b54b

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.023 s) : 0, 1022505
Total [baseline] (8.649 s) : 0, 8649042
Agent [candidate] (1.017 s) : 0, 1016785
Total [candidate] (8.679 s) : 0, 8678956
section iast
Agent [baseline] (1.151 s) : 0, 1151133
Total [baseline] (9.268 s) : 0, 9268110
Agent [candidate] (1.147 s) : 0, 1146843
Total [candidate] (9.292 s) : 0, 9292103
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.023 s -
Agent iast 1.151 s 128.628 ms (12.6%)
Total tracing 8.649 s -
Total iast 9.268 s 619.068 ms (7.2%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.017 s -
Agent iast 1.147 s 130.057 ms (12.8%)
Total tracing 8.679 s -
Total iast 9.292 s 613.146 ms (7.1%)
gantt
    title insecure-bank - break down per module: candidate=1.55.0-SNAPSHOT~81fe323462, baseline=1.55.0-SNAPSHOT~a56894b54b

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.495 ms) : 0, 1495
crashtracking [candidate] (1.455 ms) : 0, 1455
BytebuddyAgent [baseline] (698.322 ms) : 0, 698322
BytebuddyAgent [candidate] (692.777 ms) : 0, 692777
GlobalTracer [baseline] (242.049 ms) : 0, 242049
GlobalTracer [candidate] (241.79 ms) : 0, 241790
AppSec [baseline] (32.184 ms) : 0, 32184
AppSec [candidate] (32.494 ms) : 0, 32494
Debugger [baseline] (6.473 ms) : 0, 6473
Debugger [candidate] (6.431 ms) : 0, 6431
Remote Config [baseline] (716.36 µs) : 0, 716
Remote Config [candidate] (698.653 µs) : 0, 699
Telemetry [baseline] (9.046 ms) : 0, 9046
Telemetry [candidate] (9.268 ms) : 0, 9268
Flare Poller [baseline] (10.922 ms) : 0, 10922
Flare Poller [candidate] (10.773 ms) : 0, 10773
section iast
crashtracking [baseline] (1.458 ms) : 0, 1458
crashtracking [candidate] (1.475 ms) : 0, 1475
BytebuddyAgent [baseline] (815.375 ms) : 0, 815375
BytebuddyAgent [candidate] (812.617 ms) : 0, 812617
GlobalTracer [baseline] (231.876 ms) : 0, 231876
GlobalTracer [candidate] (230.878 ms) : 0, 230878
IAST [baseline] (26.508 ms) : 0, 26508
IAST [candidate] (26.331 ms) : 0, 26331
AppSec [baseline] (35.28 ms) : 0, 35280
AppSec [candidate] (34.796 ms) : 0, 34796
Debugger [baseline] (6.058 ms) : 0, 6058
Debugger [candidate] (6.093 ms) : 0, 6093
Remote Config [baseline] (614.921 µs) : 0, 615
Remote Config [candidate] (602.559 µs) : 0, 603
Telemetry [baseline] (8.494 ms) : 0, 8494
Telemetry [candidate] (8.693 ms) : 0, 8693
Flare Poller [baseline] (4.173 ms) : 0, 4173
Flare Poller [candidate] (4.159 ms) : 0, 4159
Loading
Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.55.0-SNAPSHOT~81fe323462, baseline=1.55.0-SNAPSHOT~a56894b54b

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.019 s) : 0, 1019291
Total [baseline] (10.716 s) : 0, 10716181
Agent [candidate] (1.015 s) : 0, 1014784
Total [candidate] (10.784 s) : 0, 10784274
section appsec
Agent [baseline] (1.205 s) : 0, 1204713
Total [baseline] (10.995 s) : 0, 10995487
Agent [candidate] (1.193 s) : 0, 1193109
Total [candidate] (11.04 s) : 0, 11039714
section iast
Agent [baseline] (1.151 s) : 0, 1151309
Total [baseline] (10.986 s) : 0, 10985572
Agent [candidate] (1.151 s) : 0, 1150820
Total [candidate] (11.018 s) : 0, 11018355
section profiling
Agent [baseline] (1.17 s) : 0, 1170436
Total [baseline] (11.042 s) : 0, 11041746
Agent [candidate] (1.163 s) : 0, 1162686
Total [candidate] (11.066 s) : 0, 11065600
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.019 s -
Agent appsec 1.205 s 185.422 ms (18.2%)
Agent iast 1.151 s 132.018 ms (13.0%)
Agent profiling 1.17 s 151.145 ms (14.8%)
Total tracing 10.716 s -
Total appsec 10.995 s 279.306 ms (2.6%)
Total iast 10.986 s 269.391 ms (2.5%)
Total profiling 11.042 s 325.564 ms (3.0%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.015 s -
Agent appsec 1.193 s 178.326 ms (17.6%)
Agent iast 1.151 s 136.037 ms (13.4%)
Agent profiling 1.163 s 147.902 ms (14.6%)
Total tracing 10.784 s -
Total appsec 11.04 s 255.44 ms (2.4%)
Total iast 11.018 s 234.082 ms (2.2%)
Total profiling 11.066 s 281.327 ms (2.6%)
gantt
    title petclinic - break down per module: candidate=1.55.0-SNAPSHOT~81fe323462, baseline=1.55.0-SNAPSHOT~a56894b54b

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.469 ms) : 0, 1469
crashtracking [candidate] (1.453 ms) : 0, 1453
BytebuddyAgent [baseline] (695.356 ms) : 0, 695356
BytebuddyAgent [candidate] (693.065 ms) : 0, 693065
GlobalTracer [baseline] (242.478 ms) : 0, 242478
GlobalTracer [candidate] (241.736 ms) : 0, 241736
AppSec [baseline] (32.242 ms) : 0, 32242
AppSec [candidate] (32.121 ms) : 0, 32121
Debugger [baseline] (6.365 ms) : 0, 6365
Debugger [candidate] (6.433 ms) : 0, 6433
Remote Config [baseline] (708.679 µs) : 0, 709
Remote Config [candidate] (702.673 µs) : 0, 703
Telemetry [baseline] (9.047 ms) : 0, 9047
Telemetry [candidate] (9.377 ms) : 0, 9377
Flare Poller [baseline] (10.385 ms) : 0, 10385
Flare Poller [candidate] (8.745 ms) : 0, 8745
section appsec
crashtracking [baseline] (1.474 ms) : 0, 1474
crashtracking [candidate] (1.458 ms) : 0, 1458
BytebuddyAgent [baseline] (724.094 ms) : 0, 724094
BytebuddyAgent [candidate] (717.013 ms) : 0, 717013
GlobalTracer [baseline] (236.448 ms) : 0, 236448
GlobalTracer [candidate] (234.15 ms) : 0, 234150
AppSec [baseline] (175.872 ms) : 0, 175872
AppSec [candidate] (175.282 ms) : 0, 175282
Debugger [baseline] (6.233 ms) : 0, 6233
Debugger [candidate] (6.187 ms) : 0, 6187
Remote Config [baseline] (673.121 µs) : 0, 673
Remote Config [candidate] (635.997 µs) : 0, 636
Telemetry [baseline] (9.504 ms) : 0, 9504
Telemetry [candidate] (8.492 ms) : 0, 8492
Flare Poller [baseline] (4.011 ms) : 0, 4011
Flare Poller [candidate] (3.92 ms) : 0, 3920
IAST [baseline] (25.163 ms) : 0, 25163
IAST [candidate] (24.853 ms) : 0, 24853
section iast
crashtracking [baseline] (1.466 ms) : 0, 1466
crashtracking [candidate] (1.456 ms) : 0, 1456
BytebuddyAgent [baseline] (815.61 ms) : 0, 815610
BytebuddyAgent [candidate] (815.125 ms) : 0, 815125
GlobalTracer [baseline] (231.976 ms) : 0, 231976
GlobalTracer [candidate] (231.623 ms) : 0, 231623
AppSec [baseline] (34.849 ms) : 0, 34849
AppSec [candidate] (35.313 ms) : 0, 35313
Debugger [baseline] (6.07 ms) : 0, 6070
Debugger [candidate] (6.111 ms) : 0, 6111
Remote Config [baseline] (627.421 µs) : 0, 627
Remote Config [candidate] (604.932 µs) : 0, 605
Telemetry [baseline] (8.617 ms) : 0, 8617
Telemetry [candidate] (8.573 ms) : 0, 8573
Flare Poller [baseline] (4.259 ms) : 0, 4259
Flare Poller [candidate] (4.179 ms) : 0, 4179
IAST [baseline] (26.409 ms) : 0, 26409
IAST [candidate] (26.447 ms) : 0, 26447
section profiling
ProfilingAgent [baseline] (107.886 ms) : 0, 107886
ProfilingAgent [candidate] (107.619 ms) : 0, 107619
crashtracking [baseline] (1.448 ms) : 0, 1448
crashtracking [candidate] (1.423 ms) : 0, 1423
BytebuddyAgent [baseline] (727.034 ms) : 0, 727034
BytebuddyAgent [candidate] (721.767 ms) : 0, 721767
GlobalTracer [baseline] (219.293 ms) : 0, 219293
GlobalTracer [candidate] (218.1 ms) : 0, 218100
AppSec [baseline] (33.0 ms) : 0, 33000
AppSec [candidate] (32.851 ms) : 0, 32851
Debugger [baseline] (6.557 ms) : 0, 6557
Debugger [candidate] (6.469 ms) : 0, 6469
Remote Config [baseline] (707.877 µs) : 0, 708
Remote Config [candidate] (701.419 µs) : 0, 701
Telemetry [baseline] (15.767 ms) : 0, 15767
Telemetry [candidate] (16.555 ms) : 0, 16555
Flare Poller [baseline] (5.046 ms) : 0, 5046
Flare Poller [candidate] (4.192 ms) : 0, 4192
Profiling [baseline] (109.274 ms) : 0, 109274
Profiling [candidate] (108.793 ms) : 0, 108793
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/jctools
git_commit_date 1759924549 1759936569
git_commit_sha a56894b 81fe323
release_version 1.55.0-SNAPSHOT~a56894b54b 1.55.0-SNAPSHOT~81fe323462
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1759938076 1759938076
ci_job_id 1169788770 1169788770
ci_pipeline_id 78743279 78743279
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-1l1ih8i5 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-1l1ih8i5 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 4 performance regressions! Performance is the same for 6 metrics, 12 unstable metrics.

scenario Δ mean http_req_duration Δ mean throughput candidate mean http_req_duration candidate mean throughput baseline mean http_req_duration baseline mean throughput
scenario:load:insecure-bank:no_agent:high_load better
[-337.657µs; -228.993µs] or [-7.454%; -5.055%]
unstable
[-47.388op/s; +179.575op/s] or [-4.674%; +17.711%]
4.247ms 1080.000op/s 4.530ms 1013.906op/s
scenario:load:insecure-bank:tracing:high_load worse
[+198.603µs; +443.905µs] or [+2.625%; +5.868%]
unstable
[-98.043op/s; +48.730op/s] or [-16.015%; +7.960%]
7.886ms 587.531op/s 7.564ms 612.188op/s
scenario:load:insecure-bank:iast_FULL:high_load worse
[+588.213µs; +1205.586µs] or [+4.231%; +8.671%]
unstable
[-55.694op/s; +16.319op/s] or [-16.617%; +4.869%]
14.801ms 315.469op/s 13.904ms 335.156op/s
scenario:load:petclinic:iast:high_load worse
[+1.126ms; +1.955ms] or [+2.535%; +4.399%]
unstable
[-10.721op/s; +3.746op/s] or [-10.186%; +3.559%]
45.971ms 101.763op/s 44.431ms 105.250op/s
scenario:load:petclinic:no_agent:high_load worse
[+0.938ms; +1.584ms] or [+2.563%; +4.329%]
unstable
[-12.776op/s; +4.251op/s] or [-9.997%; +3.327%]
37.844ms 123.537op/s 36.583ms 127.800op/s
scenario:load:petclinic:profiling:high_load better
[-3.152ms; -2.154ms] or [-6.145%; -4.200%]
unstable
[-1.382op/s; +11.407op/s] or [-1.515%; +12.504%]
48.635ms 96.237op/s 51.288ms 91.225op/s
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.55.0-SNAPSHOT~81fe323462, baseline=1.55.0-SNAPSHOT~a56894b54b
    dateFormat X
    axisFormat %s
section baseline
no_agent (4.53 ms) : 4480, 4580
.   : milestone, 4530,
iast (9.784 ms) : 9622, 9946
.   : milestone, 9784,
iast_FULL (13.904 ms) : 13628, 14180
.   : milestone, 13904,
iast_GLOBAL (10.872 ms) : 10681, 11064
.   : milestone, 10872,
profiling (8.973 ms) : 8835, 9111
.   : milestone, 8973,
tracing (7.564 ms) : 7449, 7680
.   : milestone, 7564,
section candidate
no_agent (4.247 ms) : 4196, 4297
.   : milestone, 4247,
iast (9.516 ms) : 9359, 9674
.   : milestone, 9516,
iast_FULL (14.801 ms) : 14504, 15098
.   : milestone, 14801,
iast_GLOBAL (10.791 ms) : 10597, 10984
.   : milestone, 10791,
profiling (8.844 ms) : 8709, 8979
.   : milestone, 8844,
tracing (7.886 ms) : 7773, 7998
.   : milestone, 7886,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.53 ms [4.48 ms, 4.58 ms] -
iast 9.784 ms [9.622 ms, 9.946 ms] 5.254 ms (116.0%)
iast_FULL 13.904 ms [13.628 ms, 14.18 ms] 9.374 ms (206.9%)
iast_GLOBAL 10.872 ms [10.681 ms, 11.064 ms] 6.342 ms (140.0%)
profiling 8.973 ms [8.835 ms, 9.111 ms] 4.443 ms (98.1%)
tracing 7.564 ms [7.449 ms, 7.68 ms] 3.034 ms (67.0%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.247 ms [4.196 ms, 4.297 ms] -
iast 9.516 ms [9.359 ms, 9.674 ms] 5.269 ms (124.1%)
iast_FULL 14.801 ms [14.504 ms, 15.098 ms] 10.554 ms (248.5%)
iast_GLOBAL 10.791 ms [10.597 ms, 10.984 ms] 6.544 ms (154.1%)
profiling 8.844 ms [8.709 ms, 8.979 ms] 4.598 ms (108.3%)
tracing 7.886 ms [7.773 ms, 7.998 ms] 3.639 ms (85.7%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.55.0-SNAPSHOT~81fe323462, baseline=1.55.0-SNAPSHOT~a56894b54b
    dateFormat X
    axisFormat %s
section baseline
no_agent (36.583 ms) : 36288, 36878
.   : milestone, 36583,
appsec (48.645 ms) : 48200, 49090
.   : milestone, 48645,
code_origins (43.722 ms) : 43373, 44072
.   : milestone, 43722,
iast (44.431 ms) : 44051, 44810
.   : milestone, 44431,
profiling (51.288 ms) : 50785, 51790
.   : milestone, 51288,
tracing (44.414 ms) : 44028, 44799
.   : milestone, 44414,
section candidate
no_agent (37.844 ms) : 37539, 38150
.   : milestone, 37844,
appsec (48.746 ms) : 48288, 49204
.   : milestone, 48746,
code_origins (44.018 ms) : 43640, 44395
.   : milestone, 44018,
iast (45.971 ms) : 45580, 46362
.   : milestone, 45971,
profiling (48.635 ms) : 48214, 49055
.   : milestone, 48635,
tracing (43.991 ms) : 43612, 44370
.   : milestone, 43991,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 36.583 ms [36.288 ms, 36.878 ms] -
appsec 48.645 ms [48.2 ms, 49.09 ms] 12.061 ms (33.0%)
code_origins 43.722 ms [43.373 ms, 44.072 ms] 7.139 ms (19.5%)
iast 44.431 ms [44.051 ms, 44.81 ms] 7.847 ms (21.5%)
profiling 51.288 ms [50.785 ms, 51.79 ms] 14.704 ms (40.2%)
tracing 44.414 ms [44.028 ms, 44.799 ms] 7.83 ms (21.4%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 37.844 ms [37.539 ms, 38.15 ms] -
appsec 48.746 ms [48.288 ms, 49.204 ms] 10.902 ms (28.8%)
code_origins 44.018 ms [43.64 ms, 44.395 ms] 6.174 ms (16.3%)
iast 45.971 ms [45.58 ms, 46.362 ms] 8.127 ms (21.5%)
profiling 48.635 ms [48.214 ms, 49.055 ms] 10.791 ms (28.5%)
tracing 43.991 ms [43.612 ms, 44.37 ms] 6.147 ms (16.2%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/jctools
git_commit_date 1759924549 1759936569
git_commit_sha a56894b 81fe323
release_version 1.55.0-SNAPSHOT~a56894b54b 1.55.0-SNAPSHOT~81fe323462
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1759938610 1759938610
ci_job_id 1169788774 1169788774
ci_pipeline_id 78743279 78743279
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-kjx19f3i 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-kjx19f3i 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 tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.55.0-SNAPSHOT~81fe323462, baseline=1.55.0-SNAPSHOT~a56894b54b
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.469 ms) : 1458, 1481
.   : milestone, 1469,
appsec (3.662 ms) : 3445, 3880
.   : milestone, 3662,
iast (2.204 ms) : 2141, 2268
.   : milestone, 2204,
iast_GLOBAL (2.254 ms) : 2189, 2318
.   : milestone, 2254,
profiling (2.05 ms) : 1999, 2102
.   : milestone, 2050,
tracing (2.013 ms) : 1963, 2062
.   : milestone, 2013,
section candidate
no_agent (1.473 ms) : 1461, 1484
.   : milestone, 1473,
appsec (3.723 ms) : 3504, 3943
.   : milestone, 3723,
iast (2.193 ms) : 2130, 2257
.   : milestone, 2193,
iast_GLOBAL (2.236 ms) : 2172, 2300
.   : milestone, 2236,
profiling (2.496 ms) : 2275, 2717
.   : milestone, 2496,
tracing (2.025 ms) : 1976, 2075
.   : milestone, 2025,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.469 ms [1.458 ms, 1.481 ms] -
appsec 3.662 ms [3.445 ms, 3.88 ms] 2.193 ms (149.2%)
iast 2.204 ms [2.141 ms, 2.268 ms] 734.688 µs (50.0%)
iast_GLOBAL 2.254 ms [2.189 ms, 2.318 ms] 784.294 µs (53.4%)
profiling 2.05 ms [1.999 ms, 2.102 ms] 580.942 µs (39.5%)
tracing 2.013 ms [1.963 ms, 2.062 ms] 543.172 µs (37.0%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.473 ms [1.461 ms, 1.484 ms] -
appsec 3.723 ms [3.504 ms, 3.943 ms] 2.251 ms (152.9%)
iast 2.193 ms [2.13 ms, 2.257 ms] 720.881 µs (49.0%)
iast_GLOBAL 2.236 ms [2.172 ms, 2.3 ms] 763.705 µs (51.9%)
profiling 2.496 ms [2.275 ms, 2.717 ms] 1.023 ms (69.5%)
tracing 2.025 ms [1.976 ms, 2.075 ms] 552.878 µs (37.5%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.55.0-SNAPSHOT~81fe323462, baseline=1.55.0-SNAPSHOT~a56894b54b
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.012 s) : 15012000, 15012000
.   : milestone, 15012000,
appsec (14.959 s) : 14959000, 14959000
.   : milestone, 14959000,
iast (18.649 s) : 18649000, 18649000
.   : milestone, 18649000,
iast_GLOBAL (17.623 s) : 17623000, 17623000
.   : milestone, 17623000,
profiling (15.442 s) : 15442000, 15442000
.   : milestone, 15442000,
tracing (15.235 s) : 15235000, 15235000
.   : milestone, 15235000,
section candidate
no_agent (15.085 s) : 15085000, 15085000
.   : milestone, 15085000,
appsec (14.969 s) : 14969000, 14969000
.   : milestone, 14969000,
iast (18.557 s) : 18557000, 18557000
.   : milestone, 18557000,
iast_GLOBAL (18.132 s) : 18132000, 18132000
.   : milestone, 18132000,
profiling (15.406 s) : 15406000, 15406000
.   : milestone, 15406000,
tracing (14.899 s) : 14899000, 14899000
.   : milestone, 14899000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.012 s [15.012 s, 15.012 s] -
appsec 14.959 s [14.959 s, 14.959 s] -53.0 ms (-0.4%)
iast 18.649 s [18.649 s, 18.649 s] 3.637 s (24.2%)
iast_GLOBAL 17.623 s [17.623 s, 17.623 s] 2.611 s (17.4%)
profiling 15.442 s [15.442 s, 15.442 s] 430.0 ms (2.9%)
tracing 15.235 s [15.235 s, 15.235 s] 223.0 ms (1.5%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.085 s [15.085 s, 15.085 s] -
appsec 14.969 s [14.969 s, 14.969 s] -116.0 ms (-0.8%)
iast 18.557 s [18.557 s, 18.557 s] 3.472 s (23.0%)
iast_GLOBAL 18.132 s [18.132 s, 18.132 s] 3.047 s (20.2%)
profiling 15.406 s [15.406 s, 15.406 s] 321.0 ms (2.1%)
tracing 14.899 s [14.899 s, 14.899 s] -186.0 ms (-1.2%)

@amarziali amarziali merged commit 2e10824 into master Oct 8, 2025
534 checks passed
@amarziali amarziali deleted the andrea.marziali/jctools branch October 8, 2025 16:56
@github-actions github-actions bot added this to the 1.55.0 milestone Oct 8, 2025
@bric3
Copy link
Contributor

bric3 commented Oct 10, 2025

About JCTools and unsafe access, I think we need to keep in mind the following, VarHandle may not be as efficient as unsafe.

Netty has basically a similar issue as us, the baseline of Netty 4 is Java 8 (Netty 5 current baseline is Java 25).

Note

Note the following issues are netty specifics, so before moving to something else we need to properly measure the performance impact (especially thinking about the queues).

https://github.com/netty/netty/wiki/Java-24-and-sun.misc.Unsafe

@amarziali amarziali restored the andrea.marziali/jctools branch November 28, 2025 15:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants