diff options
author | Julien HENRY <julien.henry@sonarsource.com> | 2013-04-17 16:50:20 +0200 |
---|---|---|
committer | Julien HENRY <julien.henry@sonarsource.com> | 2013-04-17 16:51:12 +0200 |
commit | c06ac5eaa744c05dbc7c779d0de84baea325776a (patch) | |
tree | b7b41f3683e95fb5cd00b4237c27617bb980355a /sonar-batch/src | |
parent | c946ab5883685a67cf5476042905e8b5d66c3bbc (diff) | |
download | sonarqube-c06ac5eaa744c05dbc7c779d0de84baea325776a.tar.gz sonarqube-c06ac5eaa744c05dbc7c779d0de84baea325776a.zip |
SONAR-4147 Implemented profiling of purge
+ minor changes like display of percents
Diffstat (limited to 'sonar-batch/src')
5 files changed, 29 insertions, 29 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java index a1c5d3be58d..ac1bed2549a 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java @@ -19,6 +19,8 @@ */ package org.sonar.batch.bootstrap; +import org.sonar.core.purge.PurgeProfiler; + import org.apache.commons.configuration.PropertiesConfiguration; import org.sonar.api.Plugin; import org.sonar.api.config.EmailSettings; @@ -105,7 +107,8 @@ public class BootstrapContainer extends ComponentContainer { DefaultDatabaseConnector.class, JpaDatabaseSession.class, BatchDatabaseSessionFactory.class, - DaoUtils.getDaoClasses() + DaoUtils.getDaoClasses(), + PurgeProfiler.class ); } diff --git a/sonar-batch/src/main/java/org/sonar/batch/profiling/AbstractTimeProfiling.java b/sonar-batch/src/main/java/org/sonar/batch/profiling/AbstractTimeProfiling.java index 7edabab1ee2..51a5d263702 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/profiling/AbstractTimeProfiling.java +++ b/sonar-batch/src/main/java/org/sonar/batch/profiling/AbstractTimeProfiling.java @@ -19,6 +19,8 @@ */ package org.sonar.batch.profiling; +import org.sonar.api.utils.TimeUtils; + import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -51,26 +53,7 @@ public abstract class AbstractTimeProfiling { } public String totalTimeAsString() { - if (totalTime < 1000) { - return String.format("%sms", totalTime); - } - else { - long sec = totalTime / 1000; - // long remainingMs = totalTime - (sec * 1000); - if (sec < 60) { - return String.format("%ss", sec); - } - else { - long min = sec / 60; - long remainingSec = sec - (min * 60); - if (remainingSec > 0) { - return String.format("%smin %ss", min, remainingSec); - } - else { - return String.format("%smin", min); - } - } - } + return TimeUtils.formatDuration(totalTime); } public void setTotalTime(long totalTime) { diff --git a/sonar-batch/src/main/java/org/sonar/batch/profiling/ModuleProfiling.java b/sonar-batch/src/main/java/org/sonar/batch/profiling/ModuleProfiling.java index 895c98ef0f0..895624b9db5 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/profiling/ModuleProfiling.java +++ b/sonar-batch/src/main/java/org/sonar/batch/profiling/ModuleProfiling.java @@ -19,6 +19,7 @@ */ package org.sonar.batch.profiling; +import org.sonar.api.utils.TimeUtils; import org.sonar.batch.phases.Phases; import org.sonar.batch.phases.Phases.Phase; @@ -45,13 +46,19 @@ public class ModuleProfiling extends AbstractTimeProfiling { } public void dump() { + double percent = this.totalTime() / 100.0; for (PhaseProfiling phaseProfiling : sortByDescendingTotalTime(profilingPerPhase.values())) { - System.out.println(" * " + phaseProfiling.phase() + " execution time: " + phaseProfiling.totalTimeAsString()); + StringBuilder sb = new StringBuilder(); + sb.append(" * ").append(phaseProfiling.phase()).append(" execution time: ").append(phaseProfiling.totalTimeAsString()) + .append(" (").append((int) (phaseProfiling.totalTime() / percent)).append("%)"); + System.out.println(sb.toString()); } for (Phase phase : Phases.Phase.values()) { if (profilingPerPhase.containsKey(phase)) { - System.out.println(""); - System.out.println(" * " + phase + " execution time breakdown"); + StringBuilder sb = new StringBuilder(); + sb.append("\n * ").append(phase).append(" execution time breakdown: ") + .append(TimeUtils.formatDuration(getProfilingPerPhase(phase).totalTime())); + System.out.println(sb.toString()); getProfilingPerPhase(phase).dump(); } } diff --git a/sonar-batch/src/main/java/org/sonar/batch/profiling/PhaseProfiling.java b/sonar-batch/src/main/java/org/sonar/batch/profiling/PhaseProfiling.java index bb83a8c7eb0..46566b70991 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/profiling/PhaseProfiling.java +++ b/sonar-batch/src/main/java/org/sonar/batch/profiling/PhaseProfiling.java @@ -74,8 +74,12 @@ public class PhaseProfiling extends AbstractTimeProfiling { } public void dump() { + double percent = this.totalTime() / 100.0; for (ItemProfiling itemProfiling : truncateList(sortByDescendingTotalTime(profilingPerItem.values()))) { - System.out.println(" o " + itemProfiling.itemName() + ": " + itemProfiling.totalTimeAsString()); + StringBuilder sb = new StringBuilder(); + sb.append(" o ").append(itemProfiling.itemName()).append(": ").append(itemProfiling.totalTimeAsString()) + .append(" (").append((int) (itemProfiling.totalTime() / percent)).append("%)"); + System.out.println(sb.toString()); } } diff --git a/sonar-batch/src/main/java/org/sonar/batch/profiling/PhasesSumUpTimeProfiler.java b/sonar-batch/src/main/java/org/sonar/batch/profiling/PhasesSumUpTimeProfiler.java index a78e608c3f5..2690aff2cd0 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/profiling/PhasesSumUpTimeProfiler.java +++ b/sonar-batch/src/main/java/org/sonar/batch/profiling/PhasesSumUpTimeProfiler.java @@ -30,6 +30,7 @@ import org.sonar.api.batch.events.ProjectAnalysisHandler; import org.sonar.api.batch.events.SensorExecutionHandler; import org.sonar.api.batch.events.SensorsPhaseHandler; import org.sonar.api.resources.Project; +import org.sonar.api.utils.TimeUtils; import org.sonar.batch.phases.Phases; import java.util.IdentityHashMap; @@ -66,15 +67,17 @@ public class PhasesSumUpTimeProfiler implements ProjectAnalysisHandler, SensorEx } else { currentModuleProfiling.stop(); - System.out.println("\n -------- Profiling for module " + module.getName() + " --------\n"); + long moduleTotalTime = currentModuleProfiling.totalTime(); + System.out.println("\n -------- Profiling of module " + module.getName() + ": " + TimeUtils.formatDuration(moduleTotalTime) + " --------\n"); currentModuleProfiling.dump(); - System.out.println("\n -------- End of profiling for module " + module.getName() + " --------\n"); + System.out.println("\n -------- End of profiling of module " + module.getName() + " --------\n"); totalProfiling.merge(currentModuleProfiling); if (module.isRoot() && !module.getModules().isEmpty()) { totalProfiling.stop(); - System.out.println("\n ======== Profiling for total execution ========\n"); + long totalTime = totalProfiling.totalTime(); + System.out.println("\n ======== Profiling of total execution: " + TimeUtils.formatDuration(totalTime) + " ========\n"); totalProfiling.dump(); - System.out.println("\n ======== End of profiling for total execution ========\n"); + System.out.println("\n ======== End of profiling of total execution ========\n"); } } } |