[starter] Don't use linked set since we don't need order

The change saves about 400Mb on 2Gb JSON in heap

GitOrigin-RevId: 0a4c1831b1a8f163e3e12616e835baaa5d38249e
This commit is contained in:
Maxim.Kolmakov
2024-08-23 15:30:18 +02:00
committed by intellij-monorepo-bot
parent c4fed1b70a
commit b70d71eda2

View File

@@ -5,7 +5,7 @@ package com.intellij.tools.ide.metrics.collector.telemetry
import com.intellij.tools.ide.util.common.PrintFailuresMode
import com.intellij.tools.ide.util.common.withRetryBlocking
import it.unimi.dsi.fastutil.objects.Object2ObjectFunction
import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap
import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializable
@@ -133,12 +133,12 @@ open class OpentelemetrySpanJsonParser(private val spanFilter: SpanFilter) {
return jsonData
}
private fun getParentToSpanMap(spans: List<SpanData>): Object2ObjectLinkedOpenHashMap<String, MutableSet<SpanData>> {
val indexParentToChild = Object2ObjectLinkedOpenHashMap<String, MutableSet<SpanData>>()
private fun getParentToSpanMap(spans: List<SpanData>): Object2ObjectOpenHashMap<String, ArrayList<SpanData>> {
val indexParentToChild = Object2ObjectOpenHashMap<String, ArrayList<SpanData>>()
for (span in spans) {
val parentSpanId = span.getParentSpanId()
if (parentSpanId != null) {
indexParentToChild.computeIfAbsent(parentSpanId, Object2ObjectFunction { ObjectLinkedOpenHashSet() }).add(span)
indexParentToChild.computeIfAbsent(parentSpanId, Object2ObjectFunction { ArrayList(5) }).add(span)
}
}
return indexParentToChild