diff --git a/src/main/java/it/smartphonecombo/uecapabilityparser/importer/Import0xB0CDBin.kt b/src/main/java/it/smartphonecombo/uecapabilityparser/importer/Import0xB0CDBin.kt index 98597ce7..61157966 100644 --- a/src/main/java/it/smartphonecombo/uecapabilityparser/importer/Import0xB0CDBin.kt +++ b/src/main/java/it/smartphonecombo/uecapabilityparser/importer/Import0xB0CDBin.kt @@ -16,15 +16,12 @@ import it.smartphonecombo.uecapabilityparser.model.component.ComponentLte import it.smartphonecombo.uecapabilityparser.model.modulation.Modulation import it.smartphonecombo.uecapabilityparser.model.modulation.ModulationOrder import it.smartphonecombo.uecapabilityparser.util.ImportQcHelpers -import it.smartphonecombo.uecapabilityparser.util.WeakConcurrentHashMap import java.io.BufferedInputStream import java.io.IOException import java.io.InputStream object Import0xB0CDBin : ImportCapabilities { - private val cacheQamIndex = WeakConcurrentHashMap() - /** * This parser take as [input] a [InputSource] of a 0xB0CD (binary) * @@ -157,11 +154,6 @@ object Import0xB0CDBin : ImportCapabilities { * The sequence generator is guessed, so it can be wrong or incomplete. */ fun getQamFromIndex(index: Int): Modulation { - val cachedResult = cacheQamIndex[index] - if (cachedResult != null) { - return cachedResult - } - /* Some examples: 0 -> INVALID @@ -187,7 +179,6 @@ object Import0xB0CDBin : ImportCapabilities { } val resultQam = Modulation.from(result.toList()) - cacheQamIndex[index] = resultQam return resultQam } diff --git a/src/main/java/it/smartphonecombo/uecapabilityparser/model/BCS.kt b/src/main/java/it/smartphonecombo/uecapabilityparser/model/BCS.kt index 7798275d..938aa029 100644 --- a/src/main/java/it/smartphonecombo/uecapabilityparser/model/BCS.kt +++ b/src/main/java/it/smartphonecombo/uecapabilityparser/model/BCS.kt @@ -1,7 +1,6 @@ package it.smartphonecombo.uecapabilityparser.model import it.smartphonecombo.uecapabilityparser.extension.mutableListWithCapacity -import it.smartphonecombo.uecapabilityparser.util.WeakConcurrentHashMap import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -11,11 +10,6 @@ sealed interface BCS : Comparable { fun toCompactStr(): String companion object { - // Cache used by fromBinaryString - private val cacheBinary = WeakConcurrentHashMap() - // Cache used by fromQualcommCP - private val cacheCP = WeakConcurrentHashMap() - /** * Converts the given binaryString to an instance of [BCS] * - If binaryString has no bit with value 1 return [EmptyBCS] @@ -24,11 +18,6 @@ sealed interface BCS : Comparable { * - otherwise it returns a [MultiBCS] */ fun fromBinaryString(binaryString: String): BCS { - val cachedResult = cacheBinary[binaryString] - if (cachedResult != null) { - return cachedResult - } - val bcsList = mutableListWithCapacity(binaryString.length) for (x in binaryString.indices) { if (binaryString[x] == '1') { @@ -43,7 +32,6 @@ sealed interface BCS : Comparable { 32 -> AllBCS else -> MultiBCS(bcsList.toIntArray()) } - cacheBinary[binaryString] = result return result } @@ -56,11 +44,6 @@ sealed interface BCS : Comparable { */ @Throws(NumberFormatException::class) fun fromQualcommCP(bcsString: String): BCS { - val cachedResult = cacheCP[bcsString] - if (cachedResult != null) { - return cachedResult - } - val result = when { bcsString.isEmpty() -> EmptyBCS @@ -72,7 +55,6 @@ sealed interface BCS : Comparable { } else -> SingleBCS(bcsString.toInt()) } - cacheCP[bcsString] = result return result } } diff --git a/src/main/java/it/smartphonecombo/uecapabilityparser/model/Mimo.kt b/src/main/java/it/smartphonecombo/uecapabilityparser/model/Mimo.kt index cd98c575..9b57e7f0 100644 --- a/src/main/java/it/smartphonecombo/uecapabilityparser/model/Mimo.kt +++ b/src/main/java/it/smartphonecombo/uecapabilityparser/model/Mimo.kt @@ -1,7 +1,6 @@ package it.smartphonecombo.uecapabilityparser.model import it.smartphonecombo.uecapabilityparser.extension.indexOfMin -import it.smartphonecombo.uecapabilityparser.util.WeakConcurrentHashMap import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -14,16 +13,7 @@ sealed interface Mimo : Comparable { override fun compareTo(other: Mimo): Int = average().compareTo(other.average()) companion object { - private val cacheInt = WeakConcurrentHashMap() - private val cacheIntArray = WeakConcurrentHashMap, Mimo>() - private val cacheQcIndex = WeakConcurrentHashMap() - fun from(int: Int): Mimo { - val cachedResult = cacheInt[int] - if (cachedResult != null) { - return cachedResult - } - val result = if (int == 0) { EmptyMimo @@ -33,16 +23,10 @@ sealed interface Mimo : Comparable { SingleMimo(int) } - cacheInt[int] = result return result } fun from(list: List): Mimo { - val cachedResult = cacheIntArray[list] - if (cachedResult != null) { - return cachedResult - } - val result = if (list.isEmpty()) { EmptyMimo @@ -52,7 +36,6 @@ sealed interface Mimo : Comparable { MixedMimo(list.sortedDescending()) } - cacheIntArray[list] = result return result } @@ -62,11 +45,6 @@ sealed interface Mimo : Comparable { * The sequence generator is guessed, so it can be wrong or incomplete. */ fun fromQcIndex(index: Int): Mimo { - val cachedResult = cacheQcIndex[index] - if (cachedResult != null) { - return cachedResult - } - /* Some examples: 0 -> 0 @@ -94,8 +72,6 @@ sealed interface Mimo : Comparable { } val resultMimo = from(result.toList()) - cacheQcIndex[index] = resultMimo - return resultMimo } } diff --git a/src/main/java/it/smartphonecombo/uecapabilityparser/model/bandwidth/Bandwidth.kt b/src/main/java/it/smartphonecombo/uecapabilityparser/model/bandwidth/Bandwidth.kt index e2e2a6ba..17d75067 100644 --- a/src/main/java/it/smartphonecombo/uecapabilityparser/model/bandwidth/Bandwidth.kt +++ b/src/main/java/it/smartphonecombo/uecapabilityparser/model/bandwidth/Bandwidth.kt @@ -1,6 +1,5 @@ package it.smartphonecombo.uecapabilityparser.model.bandwidth -import it.smartphonecombo.uecapabilityparser.util.WeakConcurrentHashMap import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -13,15 +12,7 @@ sealed interface Bandwidth : Comparable { override fun compareTo(other: Bandwidth): Int = average().compareTo(other.average()) companion object { - private val cacheInt = WeakConcurrentHashMap() - private val cacheIntList = WeakConcurrentHashMap, Bandwidth>() - fun from(int: Int): Bandwidth { - val cachedResult = cacheInt[int] - if (cachedResult != null) { - return cachedResult - } - val result = if (int == 0) { EmptyBandwidth @@ -29,16 +20,10 @@ sealed interface Bandwidth : Comparable { SingleBandwidth(int) } - cacheInt[int] = result return result } fun from(list: List): Bandwidth { - val cachedResult = cacheIntList[list] - if (cachedResult != null) { - return cachedResult - } - val result = if (list.isEmpty()) { EmptyBandwidth @@ -48,7 +33,6 @@ sealed interface Bandwidth : Comparable { MixedBandwidth(list.sortedDescending()) } - cacheIntList[list] = result return result } } diff --git a/src/main/java/it/smartphonecombo/uecapabilityparser/model/modulation/Modulation.kt b/src/main/java/it/smartphonecombo/uecapabilityparser/model/modulation/Modulation.kt index e0aa8a68..bb39d260 100644 --- a/src/main/java/it/smartphonecombo/uecapabilityparser/model/modulation/Modulation.kt +++ b/src/main/java/it/smartphonecombo/uecapabilityparser/model/modulation/Modulation.kt @@ -1,6 +1,5 @@ package it.smartphonecombo.uecapabilityparser.model.modulation -import it.smartphonecombo.uecapabilityparser.util.WeakConcurrentHashMap import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -23,17 +22,10 @@ sealed interface Modulation : Comparable { SingleModulation(it) } } - private val cacheModulationArray = - WeakConcurrentHashMap, Modulation>() fun from(modulationOrder: ModulationOrder) = singleModulations[modulationOrder.ordinal] fun from(modulationList: List): Modulation { - val cachedResult = cacheModulationArray[modulationList] - if (cachedResult != null) { - return cachedResult - } - val result = if (modulationList.isEmpty()) { EmptyModulation @@ -43,7 +35,6 @@ sealed interface Modulation : Comparable { MixedModulation(modulationList.sortedDescending()) } - cacheModulationArray[modulationList] = result return result } } diff --git a/src/main/java/it/smartphonecombo/uecapabilityparser/util/WeakConcurrentHashMap.kt b/src/main/java/it/smartphonecombo/uecapabilityparser/util/WeakConcurrentHashMap.kt deleted file mode 100644 index 0a95e87d..00000000 --- a/src/main/java/it/smartphonecombo/uecapabilityparser/util/WeakConcurrentHashMap.kt +++ /dev/null @@ -1,55 +0,0 @@ -package it.smartphonecombo.uecapabilityparser.util - -import java.util.WeakHashMap - -/** - * This map is backed by [WeakHashMap]. Write operations are protected by a shared lock. [entries], - * [keys], [values] aren't views, but copies. - */ -class WeakConcurrentHashMap : MutableMap { - private val internalMap = WeakHashMap() - private val writeLock = Any() - - /** A copy of [WeakHashMap.entries] */ - override val entries: MutableSet> - get() = internalMap.entries.toMutableSet() - - /** A copy of [WeakHashMap.keys] */ - override val keys: MutableSet - get() = internalMap.keys.toMutableSet() - - override val size: Int - get() = internalMap.size - - /** A copy of [WeakHashMap.values] */ - override val values: MutableCollection - get() = internalMap.values.toMutableList() - - override fun isEmpty(): Boolean = internalMap.isEmpty() - - override fun get(key: K): V? = internalMap[key] - - override fun containsValue(value: V): Boolean = internalMap.containsValue(value) - - override fun containsKey(key: K): Boolean = internalMap.containsKey(key) - - override fun clear() = synchronized(writeLock) { internalMap.clear() } - - override fun remove(key: K): V? { - synchronized(writeLock) { - return internalMap.remove(key) - } - } - - override fun putAll(from: Map) { - synchronized(writeLock) { - return internalMap.putAll(from) - } - } - - override fun put(key: K, value: V): V? { - synchronized(writeLock) { - return internalMap.put(key, value) - } - } -}