Browse Source

Use Trove for memory efficient Map

tags/8.0
Duarte Meneses 4 years ago
parent
commit
a16d96bc36

+ 2
- 3
server/sonar-ce-task-projectanalysis/build.gradle View File

@@ -19,7 +19,7 @@ dependencies {

compile 'org.slf4j:jul-to-slf4j'
compile 'org.slf4j:slf4j-api'
compile 'net.sf.trove4j:core:3.1.0'
compile 'commons-codec:commons-codec'
compile 'commons-io:commons-io'
compile 'commons-lang:commons-lang'
@@ -30,8 +30,7 @@ dependencies {
compile 'com.googlecode.java-diff-utils:diffutils'
compile 'org.mybatis:mybatis'
compile 'org.picocontainer:picocontainer'
compile 'com.github.vlsi.compactmap:compactmap:1.3.0'

compile project(':sonar-core')
compile project(':server:sonar-ce-task')
compile project(':server:sonar-db-migration')

+ 3
- 3
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/MapBasedRawMeasureRepository.java View File

@@ -21,6 +21,7 @@ package org.sonar.ce.task.projectanalysis.measure;

import com.google.common.collect.ImmutableSetMultimap;
import com.google.common.collect.SetMultimap;
import gnu.trove.map.hash.THashMap;
import java.util.Collections;
import java.util.Map;
import java.util.Optional;
@@ -28,7 +29,6 @@ import java.util.Set;
import java.util.function.Function;
import org.sonar.ce.task.projectanalysis.component.Component;
import org.sonar.ce.task.projectanalysis.metric.Metric;
import vlsi.utils.CompactHashMap;

import static com.google.common.base.Preconditions.checkArgument;
import static java.lang.String.format;
@@ -40,7 +40,7 @@ import static java.util.Objects.requireNonNull;
*/
public final class MapBasedRawMeasureRepository<T> implements MeasureRepository {
private final Function<Component, T> componentToKey;
private final Map<T, Map<String, Measure>> measures = new CompactHashMap<>();
private final Map<T, Map<String, Measure>> measures = new THashMap<>();

public MapBasedRawMeasureRepository(Function<Component, T> componentToKey) {
this.componentToKey = requireNonNull(componentToKey);
@@ -141,7 +141,7 @@ public final class MapBasedRawMeasureRepository<T> implements MeasureRepository
requireNonNull(overridePolicy);

T componentKey = componentToKey.apply(component);
Map<String, Measure> measuresPerMetric = measures.computeIfAbsent(componentKey, key -> new CompactHashMap<>());
Map<String, Measure> measuresPerMetric = measures.computeIfAbsent(componentKey, key -> new THashMap<>());
if (!measuresPerMetric.containsKey(metric.getKey()) || overridePolicy == OverridePolicy.OVERRIDE) {
measuresPerMetric.put(metric.getKey(), measure);
}

+ 0
- 2
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/MeasureToMeasureDto.java View File

@@ -25,9 +25,7 @@ import org.sonar.ce.task.projectanalysis.metric.Metric;
import org.sonar.db.measure.LiveMeasureDto;
import org.sonar.db.measure.MeasureDto;
import org.sonar.ce.task.projectanalysis.analysis.AnalysisMetadataHolder;
import org.sonar.ce.task.projectanalysis.component.Component;
import org.sonar.ce.task.projectanalysis.component.TreeRootHolder;
import org.sonar.ce.task.projectanalysis.metric.Metric;

public class MeasureToMeasureDto {


+ 2
- 2
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/scm/ScmInfoRepositoryImpl.java View File

@@ -20,6 +20,7 @@
package org.sonar.ce.task.projectanalysis.scm;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import org.sonar.api.utils.log.Logger;
@@ -31,7 +32,6 @@ import org.sonar.ce.task.projectanalysis.component.Component.Status;
import org.sonar.ce.task.projectanalysis.source.SourceHashRepository;
import org.sonar.ce.task.projectanalysis.source.SourceLinesDiff;
import org.sonar.scanner.protocol.output.ScannerReport;
import vlsi.utils.CompactHashMap;

import static java.util.Objects.requireNonNull;

@@ -40,7 +40,7 @@ public class ScmInfoRepositoryImpl implements ScmInfoRepository {
private static final Logger LOGGER = Loggers.get(ScmInfoRepositoryImpl.class);

private final BatchReportReader scannerReportReader;
private final Map<Component, Optional<ScmInfo>> scmInfoCache = new CompactHashMap<>();
private final Map<Component, Optional<ScmInfo>> scmInfoCache = new HashMap<>();
private final ScmInfoDbLoader scmInfoDbLoader;
private final AnalysisMetadataHolder analysisMetadata;
private final SourceLinesDiff sourceLinesDiff;

Loading…
Cancel
Save