From ecab6d8cdf3695a03bfab3f44370ce168dc1c7ad Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Thu, 24 Jun 2021 11:36:10 +0100 Subject: [PATCH] perf: avoid expensive set construction in Config ctor --- CHANGELOG.md | 3 +++ bugsnag-android-core/detekt-baseline.xml | 2 +- .../src/main/java/com/bugsnag/android/ConfigInternal.kt | 8 ++++---- .../test/java/com/bugsnag/android/ImmutableConfigTest.kt | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d43f37ed40..d45bc8ad91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,9 @@ * Cache results from PackageManager [#1288](https://github.com/bugsnag/bugsnag-android/pull/1288) +* Avoid expensive set construction in Config constructor + [#1289](https://github.com/bugsnag/bugsnag-android/pull/1289) + ## 5.9.4 (2021-05-26) * Unity: add methods for setting autoNotify and autoDetectAnrs diff --git a/bugsnag-android-core/detekt-baseline.xml b/bugsnag-android-core/detekt-baseline.xml index 586936cf8e..0c3e0f3b63 100644 --- a/bugsnag-android-core/detekt-baseline.xml +++ b/bugsnag-android-core/detekt-baseline.xml @@ -19,7 +19,7 @@ MagicNumber:DefaultDelivery.kt$DefaultDelivery$499 MagicNumber:LastRunInfoStore.kt$LastRunInfoStore$3 MaxLineLength:LastRunInfo.kt$LastRunInfo$return "LastRunInfo(consecutiveLaunchCrashes=$consecutiveLaunchCrashes, crashed=$crashed, crashedDuringLaunch=$crashedDuringLaunch)" - ProtectedMemberInFinalClass:ConfigInternal.kt$ConfigInternal$protected val plugins = mutableSetOf<Plugin>() + ProtectedMemberInFinalClass:ConfigInternal.kt$ConfigInternal$protected val plugins = HashSet<Plugin>() ProtectedMemberInFinalClass:EventInternal.kt$EventInternal$protected fun isAnr(event: Event): Boolean ProtectedMemberInFinalClass:EventInternal.kt$EventInternal$protected fun shouldDiscardClass(): Boolean ProtectedMemberInFinalClass:EventInternal.kt$EventInternal$protected fun updateSeverityInternal(severity: Severity) diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/ConfigInternal.kt b/bugsnag-android-core/src/main/java/com/bugsnag/android/ConfigInternal.kt index 9e60eb1262..e02e0ffdff 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/ConfigInternal.kt +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/ConfigInternal.kt @@ -37,19 +37,19 @@ internal class ConfigInternal(var apiKey: String) : CallbackAware, MetadataAware var maxPersistedSessions: Int = DEFAULT_MAX_PERSISTED_SESSIONS var context: String? = null - var redactedKeys: Set = metadataState.metadata.redactedKeys + var redactedKeys: Set + get() = metadataState.metadata.redactedKeys set(value) { metadataState.metadata.redactedKeys = value - field = value } var discardClasses: Set = emptySet() var enabledReleaseStages: Set? = null - var enabledBreadcrumbTypes: Set? = BreadcrumbType.values().toSet() + var enabledBreadcrumbTypes: Set? = null var projectPackages: Set = emptySet() var persistenceDirectory: File? = null - protected val plugins = mutableSetOf() + protected val plugins = HashSet() override fun addOnError(onError: OnErrorCallback) = callbackState.addOnError(onError) override fun removeOnError(onError: OnErrorCallback) = callbackState.removeOnError(onError) diff --git a/bugsnag-android-core/src/test/java/com/bugsnag/android/ImmutableConfigTest.kt b/bugsnag-android-core/src/test/java/com/bugsnag/android/ImmutableConfigTest.kt index 76fe1d1d49..7eb173d81a 100644 --- a/bugsnag-android-core/src/test/java/com/bugsnag/android/ImmutableConfigTest.kt +++ b/bugsnag-android-core/src/test/java/com/bugsnag/android/ImmutableConfigTest.kt @@ -83,7 +83,7 @@ internal class ImmutableConfigTest { assertEquals(seed.maxPersistedEvents, maxPersistedEvents) assertEquals(seed.maxPersistedSessions, maxPersistedSessions) assertEquals(seed.persistUser, persistUser) - assertEquals(seed.enabledBreadcrumbTypes, BreadcrumbType.values().toSet()) + assertNull(seed.enabledBreadcrumbTypes) assertNotNull(persistenceDirectory) } }