lttng.ust: Replace multiple single queries by one full query
authorLoïc Prieur-Drevon <loic.prieurdrevon@gmail.com>
Mon, 18 Apr 2016 15:28:23 +0000 (11:28 -0400)
committerAlexandre Montplaisir <alexmonthy@efficios.com>
Wed, 13 Jul 2016 19:16:10 +0000 (15:16 -0400)
To update data in MemoryUsageViewer, the State System would be
queried once per thread.
This patch replaces multiple single queries by a single full
state query and reads to the result.

Change-Id: I5fbb6d80a498898342db34f8278a85f02e1c6736
Signed-off-by: Loïc Prieur-Drevon <loic.prieurdrevon@gmail.com>
Signed-off-by: Alexandre Montplaisir <alexmonthy@efficios.com>
Reviewed-on: https://git.eclipse.org/r/70875
Reviewed-by: Hudson CI
Reviewed-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Tested-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
lttng/org.eclipse.tracecompass.lttng2.ust.ui/src/org/eclipse/tracecompass/internal/lttng2/ust/ui/views/memusage/MemoryUsageViewer.java

index f358010c822429fbedb8273c33a3d0cbee956f75..80eee6a91c0d9249cecaa0f6842bd53de0b2c581 100644 (file)
@@ -31,6 +31,7 @@ import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundExc
 import org.eclipse.tracecompass.statesystem.core.exceptions.StateSystemDisposedException;
 import org.eclipse.tracecompass.statesystem.core.exceptions.StateValueTypeException;
 import org.eclipse.tracecompass.statesystem.core.exceptions.TimeRangeException;
+import org.eclipse.tracecompass.statesystem.core.interval.ITmfStateInterval;
 import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue;
 import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
@@ -113,6 +114,7 @@ public class MemoryUsageViewer extends TmfCommonXLineChartViewer {
                 long offset = this.getTimeOffset();
 
                 /* Initialize quarks and series names */
+                List<ITmfStateInterval> fullState = ss.queryFullState(start);
                 for (int quark : tidQuarks) {
                     fYValues.put(quark, new double[xvalues.length]);
                     fMemoryQuarks.put(quark, ss.getQuarkRelative(quark, UstMemoryStrings.UST_MEMORY_MEMORY_ATTRIBUTE));
@@ -120,7 +122,7 @@ public class MemoryUsageViewer extends TmfCommonXLineChartViewer {
                     String oldSeriesName = fSeriesName.get(quark);
                     String seriesName = null;
                     try {
-                        ITmfStateValue procnameValue = ss.querySingleState(start, procNameQuark).getStateValue();
+                        ITmfStateValue procnameValue = fullState.get(procNameQuark).getStateValue();
                         String procname = ""; //$NON-NLS-1$
                         if (!procnameValue.isNull()) {
                             procname = procnameValue.unboxStr();
@@ -153,14 +155,18 @@ public class MemoryUsageViewer extends TmfCommonXLineChartViewer {
                     // long conversion
                     time = time < traceStart ? traceStart : time;
                     time = time > traceEnd ? traceEnd : time;
+                    try {
+                        fullState = ss.queryFullState(time);
+                        for (int quark : tidQuarks) {
+                            double[] values = checkNotNull(fYValues.get(quark));
 
-                    for (int quark : tidQuarks) {
-                        double[] values = checkNotNull(fYValues.get(quark));
-                        try {
                             Integer memQuark = checkNotNull(fMemoryQuarks.get(quark));
-                            yvalue = ss.querySingleState(time, memQuark.intValue()).getStateValue().unboxLong();
+                            yvalue = fullState.get(memQuark.intValue()).getStateValue().unboxLong();
                             values[i] = yvalue;
-                        } catch (TimeRangeException e) {
+                        }
+                    } catch (TimeRangeException e) {
+                        for (int quark : tidQuarks) {
+                            double[] values = checkNotNull(fYValues.get(quark));
                             values[i] = 0;
                         }
                     }
This page took 0.026975 seconds and 5 git commands to generate.