From b70d71eda2ceceef8df5f83541ce09a2de496a36 Mon Sep 17 00:00:00 2001 From: "Maxim.Kolmakov" Date: Fri, 23 Aug 2024 15:30:18 +0200 Subject: [PATCH] [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 --- .../collector/telemetry/OpentelemetrySpanJsonParser.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/telemetry/OpentelemetrySpanJsonParser.kt b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/telemetry/OpentelemetrySpanJsonParser.kt index 1cbd0dbad349..af57f3cc8f50 100644 --- a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/telemetry/OpentelemetrySpanJsonParser.kt +++ b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/telemetry/OpentelemetrySpanJsonParser.kt @@ -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): Object2ObjectLinkedOpenHashMap> { - val indexParentToChild = Object2ObjectLinkedOpenHashMap>() + private fun getParentToSpanMap(spans: List): Object2ObjectOpenHashMap> { + val indexParentToChild = Object2ObjectOpenHashMap>() 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