diff options
Diffstat (limited to 'src/bm/plotter.cpp')
-rw-r--r-- | src/bm/plotter.cpp | 46 |
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); |