summaryrefslogtreecommitdiffstats
path: root/src/bm/plotter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bm/plotter.cpp')
-rw-r--r--src/bm/plotter.cpp46
1 files changed, 29 insertions, 17 deletions
diff --git a/src/bm/plotter.cpp b/src/bm/plotter.cpp
index a51784a..0430b90 100644
--- a/src/bm/plotter.cpp
+++ b/src/bm/plotter.cpp
@@ -692,13 +692,15 @@ bool IndexPlotter::drawScenes(
HistoriesPlotter::HistoriesPlotter(
const QList<ResultHistoryInfo *> &rhInfos, const bool showBenchmark, const int baseTimestamp,
- const QList<int> *basePos, const QList<QList<int> > *extraPos, const QStringList *extraDescr)
+ const QList<int> *basePos, const QList<QList<int> > *extraPos, const QStringList *extraDescr,
+ const bool commonValueRange)
: rhInfos(rhInfos)
, showBenchmark(showBenchmark)
, baseTimestamp(baseTimestamp)
, basePos(basePos)
, extraPos(extraPos)
, extraDescr(extraDescr)
+ , commonValueRange(commonValueRange)
, width(1200)
, rhHeight(
qMin(showBenchmark ? 220 : 170, qMax(showBenchmark ? 170 : 120, 800 / rhInfos.size())))
@@ -782,20 +784,22 @@ bool HistoriesPlotter::drawScenes(
}
}
- // Find global per-metric value ranges ...
QMap<QString, MetricInfo *> metricInfos;
- for (int i = 0; i < rhInfos.size(); ++i) {
- const ResultHistoryInfo *rhInfo = rhInfos.at(i);
- const QString metric = rhInfo->metric();
- if (!metricInfos.contains(metric)) {
- const qreal firstValue = rhInfo->value(0);
- metricInfos.insert(metric, new MetricInfo(firstValue, firstValue));
- }
- MetricInfo *metricInfo = metricInfos.value(metric);
- for (int j = 0; j < rhInfo->size(); ++j) {
- const qreal value = rhInfo->value(j);
- metricInfo->vmin = qMin(metricInfo->vmin, value);
- metricInfo->vmax = qMax(metricInfo->vmax, value);
+ if (commonValueRange) {
+ // Find global per-metric value ranges ...
+ for (int i = 0; i < rhInfos.size(); ++i) {
+ const ResultHistoryInfo *rhInfo = rhInfos.at(i);
+ const QString metric = rhInfo->metric();
+ if (!metricInfos.contains(metric)) {
+ const qreal firstValue = rhInfo->value(0);
+ metricInfos.insert(metric, new MetricInfo(firstValue, firstValue));
+ }
+ MetricInfo *metricInfo = metricInfos.value(metric);
+ for (int j = 0; j < rhInfo->size(); ++j) {
+ const qreal value = rhInfo->value(j);
+ metricInfo->vmin = qMin(metricInfo->vmin, value);
+ metricInfo->vmax = qMax(metricInfo->vmax, value);
+ }
}
}
@@ -825,9 +829,17 @@ bool HistoriesPlotter::drawScenes(
const qreal ymin = pad_top + rh * rhHeight + pad_rh;
const qreal ymax = pad_top + (rh + 1) * rhHeight - pad_rh;
const qreal ydefault = 0.5 * (ymin + ymax);
- MetricInfo *metricInfo = metricInfos.value(rhInfo->metric());
- const qreal vmin = metricInfo->vmin;
- const qreal vmax = metricInfo->vmax;
+ qreal vmin;
+ qreal vmax;
+ if (commonValueRange) {
+ MetricInfo *metricInfo = metricInfos.value(rhInfo->metric());
+ vmin = metricInfo->vmin;
+ vmax = metricInfo->vmax;
+ } else {
+ vmin = rhInfo->minValue();
+ vmax = rhInfo->maxValue();
+ }
+
const qreal vfact = 1 / (vmax - vmin); // zero division handled elsewhere:
const qreal yfact = vfact * (ymax - ymin);