-
Notifications
You must be signed in to change notification settings - Fork 320
Optimize TagMap lookup & insertion for String literals #10138
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
In microbenchmarks, this shows a 1-1.5% improvement on finding entries (which also impacts map creation). The gain will increase for maps with larger collisions chain
|
Hi! 👋 Thanks for your pull request! 🎉 To help us review it, please make sure to:
If you need help, please check our contributing guidelines. |
BenchmarksStartupParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 59 metrics, 6 unstable metrics. Startup time reports for insecure-bankgantt
title insecure-bank - global startup overhead: candidate=1.57.0-SNAPSHOT~1d25dcccac, baseline=1.57.0-SNAPSHOT~ee12ef9e80
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.081 s) : 0, 1080769
Total [baseline] (8.717 s) : 0, 8716758
Agent [candidate] (1.076 s) : 0, 1076034
Total [candidate] (8.721 s) : 0, 8720957
section iast
Agent [baseline] (1.227 s) : 0, 1226612
Total [baseline] (9.448 s) : 0, 9448275
Agent [candidate] (1.217 s) : 0, 1217457
Total [candidate] (9.486 s) : 0, 9485807
gantt
title insecure-bank - break down per module: candidate=1.57.0-SNAPSHOT~1d25dcccac, baseline=1.57.0-SNAPSHOT~ee12ef9e80
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.195 ms) : 0, 1195
crashtracking [candidate] (1.18 ms) : 0, 1180
BytebuddyAgent [baseline] (650.434 ms) : 0, 650434
BytebuddyAgent [candidate] (646.089 ms) : 0, 646089
GlobalTracer [baseline] (280.932 ms) : 0, 280932
GlobalTracer [candidate] (281.001 ms) : 0, 281001
AppSec [baseline] (32.1 ms) : 0, 32100
AppSec [candidate] (32.103 ms) : 0, 32103
Debugger [baseline] (67.195 ms) : 0, 67195
Debugger [candidate] (66.762 ms) : 0, 66762
Remote Config [baseline] (634.095 µs) : 0, 634
Remote Config [candidate] (647.819 µs) : 0, 648
Telemetry [baseline] (9.034 ms) : 0, 9034
Telemetry [candidate] (9.028 ms) : 0, 9028
Flare Poller [baseline] (3.726 ms) : 0, 3726
Flare Poller [candidate] (3.75 ms) : 0, 3750
section iast
crashtracking [baseline] (1.197 ms) : 0, 1197
crashtracking [candidate] (1.186 ms) : 0, 1186
BytebuddyAgent [baseline] (794.407 ms) : 0, 794407
BytebuddyAgent [candidate] (787.495 ms) : 0, 787495
GlobalTracer [baseline] (256.431 ms) : 0, 256431
GlobalTracer [candidate] (254.591 ms) : 0, 254591
IAST [baseline] (27.102 ms) : 0, 27102
IAST [candidate] (26.86 ms) : 0, 26860
AppSec [baseline] (35.237 ms) : 0, 35237
AppSec [candidate] (34.905 ms) : 0, 34905
Debugger [baseline] (64.407 ms) : 0, 64407
Debugger [candidate] (64.598 ms) : 0, 64598
Remote Config [baseline] (538.653 µs) : 0, 539
Remote Config [candidate] (548.552 µs) : 0, 549
Telemetry [baseline] (8.327 ms) : 0, 8327
Telemetry [candidate] (8.41 ms) : 0, 8410
Flare Poller [baseline] (3.464 ms) : 0, 3464
Flare Poller [candidate] (3.497 ms) : 0, 3497
Startup time reports for petclinicgantt
title petclinic - global startup overhead: candidate=1.57.0-SNAPSHOT~1d25dcccac, baseline=1.57.0-SNAPSHOT~ee12ef9e80
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.079 s) : 0, 1078816
Total [baseline] (10.822 s) : 0, 10821680
Agent [candidate] (1.087 s) : 0, 1086511
Total [candidate] (10.877 s) : 0, 10877303
section appsec
Agent [baseline] (1.269 s) : 0, 1269091
Total [baseline] (11.159 s) : 0, 11158852
Agent [candidate] (1.269 s) : 0, 1269244
Total [candidate] (11.131 s) : 0, 11130507
section iast
Agent [baseline] (1.219 s) : 0, 1219234
Total [baseline] (11.132 s) : 0, 11131795
Agent [candidate] (1.246 s) : 0, 1246166
Total [candidate] (11.241 s) : 0, 11241120
section profiling
Agent [baseline] (1.216 s) : 0, 1215576
Total [baseline] (11.123 s) : 0, 11123358
Agent [candidate] (1.205 s) : 0, 1205045
Total [candidate] (11.108 s) : 0, 11107548
gantt
title petclinic - break down per module: candidate=1.57.0-SNAPSHOT~1d25dcccac, baseline=1.57.0-SNAPSHOT~ee12ef9e80
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.194 ms) : 0, 1194
crashtracking [candidate] (1.199 ms) : 0, 1199
BytebuddyAgent [baseline] (646.913 ms) : 0, 646913
BytebuddyAgent [candidate] (652.128 ms) : 0, 652128
GlobalTracer [baseline] (281.176 ms) : 0, 281176
GlobalTracer [candidate] (282.869 ms) : 0, 282869
AppSec [baseline] (32.458 ms) : 0, 32458
AppSec [candidate] (32.627 ms) : 0, 32627
Debugger [baseline] (68.212 ms) : 0, 68212
Debugger [candidate] (68.528 ms) : 0, 68528
Remote Config [baseline] (665.861 µs) : 0, 666
Remote Config [candidate] (658.317 µs) : 0, 658
Telemetry [baseline] (9.032 ms) : 0, 9032
Telemetry [candidate] (8.986 ms) : 0, 8986
Flare Poller [baseline] (3.739 ms) : 0, 3739
Flare Poller [candidate] (3.816 ms) : 0, 3816
section appsec
crashtracking [baseline] (1.203 ms) : 0, 1203
crashtracking [candidate] (1.193 ms) : 0, 1193
BytebuddyAgent [baseline] (692.414 ms) : 0, 692414
BytebuddyAgent [candidate] (691.699 ms) : 0, 691699
GlobalTracer [baseline] (260.564 ms) : 0, 260564
GlobalTracer [candidate] (259.885 ms) : 0, 259885
IAST [baseline] (24.836 ms) : 0, 24836
IAST [candidate] (24.727 ms) : 0, 24727
AppSec [baseline] (174.616 ms) : 0, 174616
AppSec [candidate] (174.85 ms) : 0, 174850
Debugger [baseline] (66.229 ms) : 0, 66229
Debugger [candidate] (67.819 ms) : 0, 67819
Remote Config [baseline] (742.694 µs) : 0, 743
Remote Config [candidate] (746.863 µs) : 0, 747
Telemetry [baseline] (9.018 ms) : 0, 9018
Telemetry [candidate] (8.976 ms) : 0, 8976
Flare Poller [baseline] (3.913 ms) : 0, 3913
Flare Poller [candidate] (3.87 ms) : 0, 3870
section iast
crashtracking [baseline] (1.207 ms) : 0, 1207
crashtracking [candidate] (1.218 ms) : 0, 1218
BytebuddyAgent [baseline] (787.347 ms) : 0, 787347
BytebuddyAgent [candidate] (807.352 ms) : 0, 807352
GlobalTracer [baseline] (254.825 ms) : 0, 254825
GlobalTracer [candidate] (259.644 ms) : 0, 259644
IAST [baseline] (26.844 ms) : 0, 26844
IAST [candidate] (27.637 ms) : 0, 27637
AppSec [baseline] (34.485 ms) : 0, 34485
AppSec [candidate] (34.763 ms) : 0, 34763
Debugger [baseline] (66.712 ms) : 0, 66712
Debugger [candidate] (67.113 ms) : 0, 67113
Remote Config [baseline] (530.058 µs) : 0, 530
Remote Config [candidate] (568.477 µs) : 0, 568
Telemetry [baseline] (8.439 ms) : 0, 8439
Telemetry [candidate] (8.498 ms) : 0, 8498
Flare Poller [baseline] (3.524 ms) : 0, 3524
Flare Poller [candidate] (3.513 ms) : 0, 3513
section profiling
crashtracking [baseline] (1.204 ms) : 0, 1204
crashtracking [candidate] (1.197 ms) : 0, 1197
BytebuddyAgent [baseline] (710.867 ms) : 0, 710867
BytebuddyAgent [candidate] (700.394 ms) : 0, 700394
GlobalTracer [baseline] (221.966 ms) : 0, 221966
GlobalTracer [candidate] (221.641 ms) : 0, 221641
AppSec [baseline] (32.642 ms) : 0, 32642
AppSec [candidate] (32.586 ms) : 0, 32586
Debugger [baseline] (68.104 ms) : 0, 68104
Debugger [candidate] (68.288 ms) : 0, 68288
Remote Config [baseline] (627.996 µs) : 0, 628
Remote Config [candidate] (649.61 µs) : 0, 650
Telemetry [baseline] (8.987 ms) : 0, 8987
Telemetry [candidate] (9.053 ms) : 0, 9053
Flare Poller [baseline] (3.808 ms) : 0, 3808
Flare Poller [candidate] (3.796 ms) : 0, 3796
ProfilingAgent [baseline] (96.987 ms) : 0, 96987
ProfilingAgent [candidate] (97.811 ms) : 0, 97811
Profiling [baseline] (97.56 ms) : 0, 97560
Profiling [candidate] (98.392 ms) : 0, 98392
LoadParameters
See matching parameters
SummaryFound 2 performance improvements and 2 performance regressions! Performance is the same for 17 metrics, 15 unstable metrics.
Request duration reports for petclinicgantt
title petclinic - request duration [CI 0.99] : candidate=1.57.0-SNAPSHOT~1d25dcccac, baseline=1.57.0-SNAPSHOT~ee12ef9e80
dateFormat X
axisFormat %s
section baseline
no_agent (17.976 ms) : 17793, 18159
. : milestone, 17976,
appsec (18.532 ms) : 18346, 18718
. : milestone, 18532,
code_origins (17.578 ms) : 17404, 17753
. : milestone, 17578,
iast (17.641 ms) : 17466, 17816
. : milestone, 17641,
profiling (18.544 ms) : 18356, 18731
. : milestone, 18544,
tracing (17.861 ms) : 17682, 18040
. : milestone, 17861,
section candidate
no_agent (16.936 ms) : 16770, 17103
. : milestone, 16936,
appsec (19.614 ms) : 19413, 19815
. : milestone, 19614,
code_origins (17.456 ms) : 17284, 17629
. : milestone, 17456,
iast (17.559 ms) : 17382, 17736
. : milestone, 17559,
profiling (18.491 ms) : 18306, 18677
. : milestone, 18491,
tracing (17.606 ms) : 17431, 17781
. : milestone, 17606,
Request duration reports for insecure-bankgantt
title insecure-bank - request duration [CI 0.99] : candidate=1.57.0-SNAPSHOT~1d25dcccac, baseline=1.57.0-SNAPSHOT~ee12ef9e80
dateFormat X
axisFormat %s
section baseline
no_agent (1.213 ms) : 1201, 1225
. : milestone, 1213,
iast (3.359 ms) : 3309, 3409
. : milestone, 3359,
iast_FULL (5.929 ms) : 5869, 5989
. : milestone, 5929,
iast_GLOBAL (3.555 ms) : 3495, 3615
. : milestone, 3555,
profiling (1.99 ms) : 1974, 2007
. : milestone, 1990,
tracing (1.805 ms) : 1791, 1820
. : milestone, 1805,
section candidate
no_agent (1.22 ms) : 1208, 1232
. : milestone, 1220,
iast (3.16 ms) : 3122, 3198
. : milestone, 3160,
iast_FULL (5.897 ms) : 5838, 5956
. : milestone, 5897,
iast_GLOBAL (3.42 ms) : 3372, 3467
. : milestone, 3420,
profiling (2.096 ms) : 2076, 2116
. : milestone, 2096,
tracing (1.803 ms) : 1789, 1817
. : milestone, 1803,
DacapoParameters
See matching parameters
SummaryFound 1 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 0 unstable metrics.
Execution time for biojavagantt
title biojava - execution time [CI 0.99] : candidate=1.57.0-SNAPSHOT~1d25dcccac, baseline=1.57.0-SNAPSHOT~ee12ef9e80
dateFormat X
axisFormat %s
section baseline
no_agent (15.055 s) : 15055000, 15055000
. : milestone, 15055000,
appsec (14.998 s) : 14998000, 14998000
. : milestone, 14998000,
iast (18.022 s) : 18022000, 18022000
. : milestone, 18022000,
iast_GLOBAL (17.945 s) : 17945000, 17945000
. : milestone, 17945000,
profiling (14.692 s) : 14692000, 14692000
. : milestone, 14692000,
tracing (14.653 s) : 14653000, 14653000
. : milestone, 14653000,
section candidate
no_agent (15.251 s) : 15251000, 15251000
. : milestone, 15251000,
appsec (14.792 s) : 14792000, 14792000
. : milestone, 14792000,
iast (18.553 s) : 18553000, 18553000
. : milestone, 18553000,
iast_GLOBAL (17.688 s) : 17688000, 17688000
. : milestone, 17688000,
profiling (14.996 s) : 14996000, 14996000
. : milestone, 14996000,
tracing (14.774 s) : 14774000, 14774000
. : milestone, 14774000,
Execution time for tomcatgantt
title tomcat - execution time [CI 0.99] : candidate=1.57.0-SNAPSHOT~1d25dcccac, baseline=1.57.0-SNAPSHOT~ee12ef9e80
dateFormat X
axisFormat %s
section baseline
no_agent (1.47 ms) : 1458, 1481
. : milestone, 1470,
appsec (3.641 ms) : 3427, 3856
. : milestone, 3641,
iast (2.207 ms) : 2142, 2271
. : milestone, 2207,
iast_GLOBAL (2.241 ms) : 2176, 2305
. : milestone, 2241,
profiling (2.09 ms) : 2036, 2143
. : milestone, 2090,
tracing (2.044 ms) : 1993, 2095
. : milestone, 2044,
section candidate
no_agent (1.478 ms) : 1466, 1489
. : milestone, 1478,
appsec (2.457 ms) : 2405, 2509
. : milestone, 2457,
iast (2.208 ms) : 2144, 2272
. : milestone, 2208,
iast_GLOBAL (2.242 ms) : 2177, 2306
. : milestone, 2242,
profiling (2.067 ms) : 2015, 2119
. : milestone, 2067,
tracing (2.041 ms) : 1991, 2092
. : milestone, 2041,
|
What Does This Do
Optimizes TagMap lookup & insertion to use reference equality check before calling String#equals in TagMap.Entry#matches.
This works because tag keys are typically string literals.
Since string literals are automatically interned, the likelihood of the tag creator and the tag querier both using the same String are high.
Motivation
In microbenchmarks, this shows a 1-1.5% improvement on finding entries (which also impacts map creation).
The gain will increase for maps with larger collisions chain
Additional Notes
Contributor Checklist
type:and (comp:orinst:) labels in addition to any useful labelsclose,fixor any linking keywords when referencing an issue.Use
solvesinstead, and assign the PR milestone to the issueJira ticket: [PROJ-IDENT]