aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-db/src/main/java/org/sonar/db/purge/PurgeProfiler.java
diff options
context:
space:
mode:
Diffstat (limited to 'sonar-db/src/main/java/org/sonar/db/purge/PurgeProfiler.java')
-rw-r--r--sonar-db/src/main/java/org/sonar/db/purge/PurgeProfiler.java98
1 files changed, 0 insertions, 98 deletions
diff --git a/sonar-db/src/main/java/org/sonar/db/purge/PurgeProfiler.java b/sonar-db/src/main/java/org/sonar/db/purge/PurgeProfiler.java
deleted file mode 100644
index 8c5c0541964..00000000000
--- a/sonar-db/src/main/java/org/sonar/db/purge/PurgeProfiler.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2017 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.db.purge;
-
-import com.google.common.annotations.VisibleForTesting;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import org.sonar.api.utils.TimeUtils;
-import org.sonar.api.utils.log.Logger;
-
-public class PurgeProfiler {
-
- private Map<String, Long> durations = new HashMap<>();
- private long startTime;
- private String currentTable;
- private final Clock clock;
-
- public PurgeProfiler() {
- this(new Clock());
- }
-
- @VisibleForTesting
- PurgeProfiler(Clock clock) {
- this.clock = clock;
- }
-
- public void reset() {
- durations.clear();
- }
-
- void start(String table) {
- this.startTime = clock.now();
- this.currentTable = table;
- }
-
- void stop() {
- final Long cumulatedDuration;
- if (durations.containsKey(currentTable)) {
- cumulatedDuration = durations.get(currentTable);
- } else {
- cumulatedDuration = 0L;
- }
- durations.put(currentTable, cumulatedDuration + (clock.now() - startTime));
- }
-
- public void dump(long totalTime, Logger logger) {
- List<Entry<String, Long>> data = new ArrayList<>(durations.entrySet());
- Collections.sort(data, (o1, o2) -> o2.getValue().compareTo(o1.getValue()));
- double percent = totalTime / 100.0;
- for (Entry<String, Long> entry : truncateList(data)) {
- StringBuilder sb = new StringBuilder();
- sb.append(" o ").append(entry.getKey()).append(": ").append(TimeUtils.formatDuration(entry.getValue()))
- .append(" (").append((int) (entry.getValue() / percent)).append("%)");
- logger.info(sb.toString());
- }
- }
-
- private static List<Entry<String, Long>> truncateList(List<Entry<String, Long>> sortedFullList) {
- int maxSize = 10;
- List<Entry<String, Long>> result = new ArrayList<>(maxSize);
- int i = 0;
- for (Entry<String, Long> item : sortedFullList) {
- if (i++ >= maxSize || item.getValue() == 0) {
- return result;
- }
- result.add(item);
- }
- return result;
- }
-
- static class Clock {
- public long now() {
- return System.currentTimeMillis();
- }
- }
-
-}