-
Notifications
You must be signed in to change notification settings - Fork 300
Use prefix trie for proxy ignores #8678
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
base: master
Are you sure you want to change the base?
Conversation
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 67 metrics, 4 unstable metrics. Startup time reports for petclinicgantt
title petclinic - global startup overhead: candidate=1.48.0-SNAPSHOT~44c44659a4, baseline=1.48.0-SNAPSHOT~295a700744
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.064 s) : 0, 1063673
Total [baseline] (10.507 s) : 0, 10506941
Agent [candidate] (1.059 s) : 0, 1058997
Total [candidate] (10.484 s) : 0, 10484341
section appsec
Agent [baseline] (1.201 s) : 0, 1201185
Total [baseline] (10.769 s) : 0, 10768908
Agent [candidate] (1.2 s) : 0, 1200116
Total [candidate] (10.751 s) : 0, 10750700
section iast
Agent [baseline] (1.189 s) : 0, 1189410
Total [baseline] (10.952 s) : 0, 10952247
Agent [candidate] (1.191 s) : 0, 1191108
Total [candidate] (11.027 s) : 0, 11027375
section profiling
Agent [baseline] (1.292 s) : 0, 1291737
Total [baseline] (11.033 s) : 0, 11032920
Agent [candidate] (1.292 s) : 0, 1292221
Total [candidate] (10.916 s) : 0, 10916424
gantt
title petclinic - break down per module: candidate=1.48.0-SNAPSHOT~44c44659a4, baseline=1.48.0-SNAPSHOT~295a700744
dateFormat X
axisFormat %s
section tracing
BytebuddyAgent [baseline] (726.997 ms) : 0, 726997
BytebuddyAgent [candidate] (722.981 ms) : 0, 722981
GlobalTracer [baseline] (241.239 ms) : 0, 241239
GlobalTracer [candidate] (239.9 ms) : 0, 239900
AppSec [baseline] (54.98 ms) : 0, 54980
AppSec [candidate] (54.519 ms) : 0, 54519
Debugger [baseline] (4.435 ms) : 0, 4435
Debugger [candidate] (4.384 ms) : 0, 4384
Remote Config [baseline] (706.423 µs) : 0, 706
Remote Config [candidate] (695.652 µs) : 0, 696
Telemetry [baseline] (14.396 ms) : 0, 14396
Telemetry [candidate] (15.658 ms) : 0, 15658
section appsec
BytebuddyAgent [baseline] (742.991 ms) : 0, 742991
BytebuddyAgent [candidate] (743.384 ms) : 0, 743384
GlobalTracer [baseline] (237.37 ms) : 0, 237370
GlobalTracer [candidate] (235.973 ms) : 0, 235973
AppSec [baseline] (176.291 ms) : 0, 176291
AppSec [candidate] (175.597 ms) : 0, 175597
Debugger [baseline] (4.258 ms) : 0, 4258
Debugger [candidate] (4.576 ms) : 0, 4576
Remote Config [baseline] (643.236 µs) : 0, 643
Remote Config [candidate] (657.95 µs) : 0, 658
Telemetry [baseline] (8.201 ms) : 0, 8201
Telemetry [candidate] (8.239 ms) : 0, 8239
IAST [baseline] (21.321 ms) : 0, 21321
IAST [candidate] (21.601 ms) : 0, 21601
section iast
BytebuddyAgent [baseline] (845.837 ms) : 0, 845837
BytebuddyAgent [candidate] (846.644 ms) : 0, 846644
GlobalTracer [baseline] (230.787 ms) : 0, 230787
GlobalTracer [candidate] (231.008 ms) : 0, 231008
AppSec [baseline] (55.829 ms) : 0, 55829
AppSec [candidate] (56.174 ms) : 0, 56174
Debugger [baseline] (4.083 ms) : 0, 4083
Debugger [candidate] (4.174 ms) : 0, 4174
Remote Config [baseline] (599.297 µs) : 0, 599
Remote Config [candidate] (605.564 µs) : 0, 606
Telemetry [baseline] (8.675 ms) : 0, 8675
Telemetry [candidate] (8.775 ms) : 0, 8775
IAST [baseline] (22.674 ms) : 0, 22674
IAST [candidate] (22.89 ms) : 0, 22890
section profiling
BytebuddyAgent [baseline] (712.238 ms) : 0, 712238
BytebuddyAgent [candidate] (712.928 ms) : 0, 712928
GlobalTracer [baseline] (359.837 ms) : 0, 359837
GlobalTracer [candidate] (359.88 ms) : 0, 359880
AppSec [baseline] (54.246 ms) : 0, 54246
AppSec [candidate] (53.595 ms) : 0, 53595
Debugger [baseline] (4.308 ms) : 0, 4308
Debugger [candidate] (4.347 ms) : 0, 4347
Remote Config [baseline] (702.54 µs) : 0, 703
Remote Config [candidate] (711.804 µs) : 0, 712
Telemetry [baseline] (8.949 ms) : 0, 8949
Telemetry [candidate] (9.043 ms) : 0, 9043
ProfilingAgent [baseline] (103.332 ms) : 0, 103332
ProfilingAgent [candidate] (103.714 ms) : 0, 103714
Profiling [baseline] (103.357 ms) : 0, 103357
Profiling [candidate] (103.74 ms) : 0, 103740
Startup time reports for insecure-bankgantt
title insecure-bank - global startup overhead: candidate=1.48.0-SNAPSHOT~44c44659a4, baseline=1.48.0-SNAPSHOT~295a700744
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.062 s) : 0, 1062191
Total [baseline] (8.669 s) : 0, 8669200
Agent [candidate] (1.055 s) : 0, 1054731
Total [candidate] (8.649 s) : 0, 8649251
section iast
Agent [baseline] (1.194 s) : 0, 1194497
Total [baseline] (9.289 s) : 0, 9289386
Agent [candidate] (1.184 s) : 0, 1184259
Total [candidate] (9.217 s) : 0, 9216815
section iast_HARDCODED_SECRET_DISABLED
Agent [baseline] (1.186 s) : 0, 1185781
Total [baseline] (9.206 s) : 0, 9205711
Agent [candidate] (1.191 s) : 0, 1191133
Total [candidate] (9.216 s) : 0, 9215677
section iast_TELEMETRY_OFF
Agent [baseline] (1.179 s) : 0, 1179438
Total [baseline] (9.244 s) : 0, 9244184
Agent [candidate] (1.193 s) : 0, 1193442
Total [candidate] (9.264 s) : 0, 9264428
gantt
title insecure-bank - break down per module: candidate=1.48.0-SNAPSHOT~44c44659a4, baseline=1.48.0-SNAPSHOT~295a700744
dateFormat X
axisFormat %s
section tracing
BytebuddyAgent [baseline] (726.48 ms) : 0, 726480
BytebuddyAgent [candidate] (721.968 ms) : 0, 721968
GlobalTracer [baseline] (241.297 ms) : 0, 241297
GlobalTracer [candidate] (239.755 ms) : 0, 239755
AppSec [baseline] (56.379 ms) : 0, 56379
AppSec [candidate] (55.063 ms) : 0, 55063
Debugger [baseline] (4.422 ms) : 0, 4422
Debugger [candidate] (4.355 ms) : 0, 4355
Remote Config [baseline] (700.843 µs) : 0, 701
Remote Config [candidate] (695.972 µs) : 0, 696
Telemetry [baseline] (12.058 ms) : 0, 12058
Telemetry [candidate] (12.03 ms) : 0, 12030
section iast
BytebuddyAgent [baseline] (849.335 ms) : 0, 849335
BytebuddyAgent [candidate] (841.74 ms) : 0, 841740
GlobalTracer [baseline] (231.097 ms) : 0, 231097
GlobalTracer [candidate] (229.663 ms) : 0, 229663
IAST [baseline] (22.916 ms) : 0, 22916
IAST [candidate] (22.59 ms) : 0, 22590
AppSec [baseline] (56.722 ms) : 0, 56722
AppSec [candidate] (55.957 ms) : 0, 55957
Debugger [baseline] (4.173 ms) : 0, 4173
Debugger [candidate] (4.129 ms) : 0, 4129
Remote Config [baseline] (599.532 µs) : 0, 600
Remote Config [candidate] (616.578 µs) : 0, 617
Telemetry [baseline] (8.79 ms) : 0, 8790
Telemetry [candidate] (8.74 ms) : 0, 8740
section iast_HARDCODED_SECRET_DISABLED
BytebuddyAgent [baseline] (842.33 ms) : 0, 842330
BytebuddyAgent [candidate] (846.903 ms) : 0, 846903
GlobalTracer [baseline] (230.452 ms) : 0, 230452
GlobalTracer [candidate] (230.926 ms) : 0, 230926
IAST [baseline] (22.727 ms) : 0, 22727
IAST [candidate] (22.874 ms) : 0, 22874
AppSec [baseline] (55.99 ms) : 0, 55990
AppSec [candidate] (55.966 ms) : 0, 55966
Debugger [baseline] (4.08 ms) : 0, 4080
Debugger [candidate] (4.11 ms) : 0, 4110
Remote Config [baseline] (603.276 µs) : 0, 603
Remote Config [candidate] (597.378 µs) : 0, 597
Telemetry [baseline] (8.722 ms) : 0, 8722
Telemetry [candidate] (8.769 ms) : 0, 8769
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (837.822 ms) : 0, 837822
BytebuddyAgent [candidate] (851.282 ms) : 0, 851282
GlobalTracer [baseline] (229.697 ms) : 0, 229697
GlobalTracer [candidate] (229.624 ms) : 0, 229624
IAST [baseline] (22.154 ms) : 0, 22154
IAST [candidate] (22.256 ms) : 0, 22256
AppSec [baseline] (55.862 ms) : 0, 55862
AppSec [candidate] (55.773 ms) : 0, 55773
Debugger [baseline] (4.071 ms) : 0, 4071
Debugger [candidate] (4.156 ms) : 0, 4156
Remote Config [baseline] (595.565 µs) : 0, 596
Remote Config [candidate] (611.397 µs) : 0, 611
Telemetry [baseline] (8.517 ms) : 0, 8517
Telemetry [candidate] (8.676 ms) : 0, 8676
LoadParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 14 metrics, 16 unstable metrics. Request duration reports for insecure-bankgantt
title insecure-bank - request duration [CI 0.99] : candidate=1.48.0-SNAPSHOT~44c44659a4, baseline=1.48.0-SNAPSHOT~295a700744
dateFormat X
axisFormat %s
section baseline
no_agent (387.675 µs) : 367, 408
. : milestone, 388,
iast (520.445 µs) : 499, 542
. : milestone, 520,
iast_FULL (733.935 µs) : 712, 756
. : milestone, 734,
iast_GLOBAL (569.851 µs) : 547, 593
. : milestone, 570,
iast_HARDCODED_SECRET_DISABLED (518.262 µs) : 497, 540
. : milestone, 518,
iast_INACTIVE (471.286 µs) : 450, 493
. : milestone, 471,
iast_TELEMETRY_OFF (509.139 µs) : 487, 531
. : milestone, 509,
tracing (465.288 µs) : 444, 486
. : milestone, 465,
section candidate
no_agent (382.676 µs) : 363, 402
. : milestone, 383,
iast (528.904 µs) : 507, 551
. : milestone, 529,
iast_FULL (741.03 µs) : 719, 763
. : milestone, 741,
iast_GLOBAL (569.591 µs) : 547, 593
. : milestone, 570,
iast_HARDCODED_SECRET_DISABLED (521.432 µs) : 500, 543
. : milestone, 521,
iast_INACTIVE (468.578 µs) : 447, 490
. : milestone, 469,
iast_TELEMETRY_OFF (507.229 µs) : 485, 529
. : milestone, 507,
tracing (465.539 µs) : 444, 487
. : milestone, 466,
Request duration reports for petclinicgantt
title petclinic - request duration [CI 0.99] : candidate=1.48.0-SNAPSHOT~44c44659a4, baseline=1.48.0-SNAPSHOT~295a700744
dateFormat X
axisFormat %s
section baseline
no_agent (1.369 ms) : 1348, 1389
. : milestone, 1369,
appsec (1.738 ms) : 1715, 1762
. : milestone, 1738,
appsec_no_iast (1.767 ms) : 1744, 1790
. : milestone, 1767,
code_origins (1.724 ms) : 1697, 1750
. : milestone, 1724,
iast (1.527 ms) : 1504, 1551
. : milestone, 1527,
profiling (1.508 ms) : 1484, 1531
. : milestone, 1508,
tracing (1.507 ms) : 1482, 1532
. : milestone, 1507,
section candidate
no_agent (1.351 ms) : 1332, 1370
. : milestone, 1351,
appsec (1.749 ms) : 1724, 1774
. : milestone, 1749,
appsec_no_iast (1.74 ms) : 1716, 1764
. : milestone, 1740,
code_origins (1.698 ms) : 1671, 1725
. : milestone, 1698,
iast (1.513 ms) : 1488, 1538
. : milestone, 1513,
profiling (1.534 ms) : 1509, 1559
. : milestone, 1534,
tracing (1.52 ms) : 1496, 1544
. : milestone, 1520,
DacapoParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 12 metrics, 0 unstable metrics. Execution time for tomcatgantt
title tomcat - execution time [CI 0.99] : candidate=1.48.0-SNAPSHOT~44c44659a4, baseline=1.48.0-SNAPSHOT~295a700744
dateFormat X
axisFormat %s
section baseline
no_agent (1.472 ms) : 1460, 1483
. : milestone, 1472,
appsec (2.373 ms) : 2327, 2420
. : milestone, 2373,
iast (2.156 ms) : 2097, 2216
. : milestone, 2156,
iast_GLOBAL (2.2 ms) : 2140, 2259
. : milestone, 2200,
profiling (2.032 ms) : 1983, 2081
. : milestone, 2032,
tracing (1.988 ms) : 1942, 2034
. : milestone, 1988,
section candidate
no_agent (1.479 ms) : 1468, 1491
. : milestone, 1479,
appsec (2.373 ms) : 2326, 2420
. : milestone, 2373,
iast (2.157 ms) : 2098, 2216
. : milestone, 2157,
iast_GLOBAL (2.198 ms) : 2139, 2258
. : milestone, 2198,
profiling (1.997 ms) : 1950, 2044
. : milestone, 1997,
tracing (1.98 ms) : 1935, 2026
. : milestone, 1980,
Execution time for biojavagantt
title biojava - execution time [CI 0.99] : candidate=1.48.0-SNAPSHOT~44c44659a4, baseline=1.48.0-SNAPSHOT~295a700744
dateFormat X
axisFormat %s
section baseline
no_agent (14.729 s) : 14729000, 14729000
. : milestone, 14729000,
appsec (14.963 s) : 14963000, 14963000
. : milestone, 14963000,
iast (18.43 s) : 18430000, 18430000
. : milestone, 18430000,
iast_GLOBAL (18.037 s) : 18037000, 18037000
. : milestone, 18037000,
profiling (14.88 s) : 14880000, 14880000
. : milestone, 14880000,
tracing (15.029 s) : 15029000, 15029000
. : milestone, 15029000,
section candidate
no_agent (15.221 s) : 15221000, 15221000
. : milestone, 15221000,
appsec (14.843 s) : 14843000, 14843000
. : milestone, 14843000,
iast (18.729 s) : 18729000, 18729000
. : milestone, 18729000,
iast_GLOBAL (18.067 s) : 18067000, 18067000
. : milestone, 18067000,
profiling (15.162 s) : 15162000, 15162000
. : milestone, 15162000,
tracing (14.851 s) : 14851000, 14851000
. : milestone, 14851000,
|
What Does This Do
When loading a class we go through different check to know if ignore the class directly or go through the bytebuddy matchers.
One of the reason of ignoring a class is that is a generated proxy (see
ProxyClassIgnored
).This class is running several
String.contains
in order to match possible prefixes. Since this list is subjected to grow, runningString.contains
is not looking performant also because we run this code for each inner class (containing$
that's loaded).A possible optimization is to leverage our
ClassNameTrie
that we are already already using. The different, for the proxy, is that we need to match starting from a group of dollars since they are inner classesThis PR introduces hence the
proxy_ignored_class_name.trie
that can be used to drive this particular prefix matching for inner classes.I also ran benchmarks showing that there is a significative perf boost using that approach. As well I put some tests to limit regressions
Motivation
Additional Notes
Contributor Checklist
type:
and (comp:
orinst:
) labels in addition to any usefull labelsclose
,fix
or any linking keywords when referencing an issue.Use
solves
instead, and assign the PR milestone to the issueJira ticket: [PROJ-IDENT]