Skip to content

perf(core): [SDK Overhead reduction for JVM 1] Remove redundant event map copies#5536

Merged
adinauer merged 2 commits into
perf/sdk-overhead-jvm-v2from
perf/sdk-overhead-jvm-map-copies-v2
Jun 18, 2026
Merged

perf(core): [SDK Overhead reduction for JVM 1] Remove redundant event map copies#5536
adinauer merged 2 commits into
perf/sdk-overhead-jvm-v2from
perf/sdk-overhead-jvm-map-copies-v2

Conversation

@adinauer

@adinauer adinauer commented Jun 12, 2026

Copy link
Copy Markdown
Member

PR Stack (SDK Overhead reduction for JVM)


📜 Description

Remove redundant intermediate HashMap copies when applying scope and options tags, and scope extras, to events.

The event setters still copy the provided maps, so this keeps event map containers isolated from the source scope/options maps while avoiding one temporary allocation per application path.

💡 Motivation and Context

This implements AR-04b from the SDK overhead reduction research. The previous code copied tags/extras before calling setters that already copy their input. Removing the extra copy reduces allocation overhead without exposing live scope or options maps to events.

💚 How did you test it?

  • ./gradlew :sentry:test --tests io.sentry.SentryClientTest --tests io.sentry.MainEventProcessorTest --tests io.sentry.protocol.SentryBaseEventSerializationTest
  • ./gradlew spotlessApply apiDump

📝 Checklist

  • I added GH Issue ID & Linear ID
  • I added tests to verify the changes.
  • No new PII added or SDK only sends newly added PII if sendDefaultPII is enabled.
  • I updated the docs if needed.
  • I updated the wizard if needed.
  • Review from the native team if needed.
  • No breaking change or entry added to the changelog.
  • No breaking change for hybrid SDKs or communicated to hybrid SDKs.

🔮 Next steps

#skip-changelog

⚠️ Merge this PR using a merge commit (not squash). Only the collection branch is squash-merged into main.

@adinauer adinauer changed the title perf(core): Remove redundant event map copies perf(core): [SDK Overhead reduction for JVM 1] Remove redundant event map copies Jun 12, 2026
@sentry

sentry Bot commented Jun 12, 2026

Copy link
Copy Markdown

📲 Install Builds

Android

🔗 App Name App ID Version Configuration
SDK Size io.sentry.tests.size 8.44.0 (1) release

⚙️ sentry-android Build Distribution Settings

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Performance metrics 🚀

  Plain With Sentry Diff
Startup time 313.57 ms 366.38 ms 52.81 ms
Size 0 B 0 B 0 B

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
a416a65 333.78 ms 410.37 ms 76.59 ms
d15471f 304.55 ms 408.43 ms 103.87 ms
ca6b6d8 380.45 ms 460.38 ms 79.93 ms
c8125f3 397.65 ms 485.14 ms 87.49 ms
b936425 302.69 ms 372.86 ms 70.17 ms
ed33deb 334.19 ms 362.30 ms 28.11 ms
cf708bd 408.35 ms 458.98 ms 50.63 ms
eb95ded 317.51 ms 369.08 ms 51.57 ms
a5ab36f 320.47 ms 389.77 ms 69.30 ms
80fd6ad 321.06 ms 375.79 ms 54.73 ms

App size

Revision Plain With Sentry Diff
a416a65 1.58 MiB 2.12 MiB 555.26 KiB
d15471f 1.58 MiB 2.13 MiB 559.54 KiB
ca6b6d8 0 B 0 B 0 B
c8125f3 1.58 MiB 2.10 MiB 532.32 KiB
b936425 0 B 0 B 0 B
ed33deb 1.58 MiB 2.13 MiB 559.52 KiB
cf708bd 1.58 MiB 2.11 MiB 539.71 KiB
eb95ded 0 B 0 B 0 B
a5ab36f 1.58 MiB 2.12 MiB 555.26 KiB
80fd6ad 0 B 0 B 0 B

Previous results on branch: perf/sdk-overhead-jvm-map-copies-v2

Startup times

Revision Plain With Sentry Diff
51ca2fb 312.13 ms 365.27 ms 53.14 ms

App size

Revision Plain With Sentry Diff
51ca2fb 0 B 0 B 0 B

adinauer and others added 2 commits June 18, 2026 14:58
Avoid creating temporary maps when applying scope and options tags or scope extras. The event setters already copy these maps, so this preserves snapshot semantics while reducing allocation overhead.

Co-Authored-By: Claude <noreply@anthropic.com>
@adinauer adinauer force-pushed the perf/sdk-overhead-jvm-v2 branch from 51c339c to 7c1a728 Compare June 18, 2026 12:58
@adinauer adinauer force-pushed the perf/sdk-overhead-jvm-map-copies-v2 branch from fba70fd to 45c641c Compare June 18, 2026 12:58
@adinauer adinauer merged commit bc6d4c8 into perf/sdk-overhead-jvm-v2 Jun 18, 2026
4 checks passed
@adinauer adinauer deleted the perf/sdk-overhead-jvm-map-copies-v2 branch June 18, 2026 13:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants