void QBenchmarkTestMethodData::setResult( qreal value, QTest::QBenchmarkMetric metric, bool setByMacro) { bool accepted = false; // Always accept the result if the iteration count has been // specified on the command line with -iterations. if (QBenchmarkGlobalData::current->iterationCount != -1) accepted = true; else if (QBenchmarkTestMethodData::current->runOnce || !setByMacro) { iterationCount = 1; accepted = true; } // Test the result directly without calling the measurer if the minimum time // has been specified on the command line with -minimumvalue. else if (QBenchmarkGlobalData::current->walltimeMinimum != -1) accepted = (value > QBenchmarkGlobalData::current->walltimeMinimum); else accepted = QBenchmarkGlobalData::current->measurer->isMeasurementAccepted(value); // Accept the result or double the number of iterations. if (accepted) resultAccepted = true; else iterationCount *= 2; this->result = QBenchmarkResult( QBenchmarkGlobalData::current->context, value, iterationCount, metric, setByMacro); }
void QuickTestResult::startBenchmark(RunMode runMode, const QString &tag) { QBenchmarkTestMethodData::current->result = QBenchmarkResult(); QBenchmarkTestMethodData::current->resultAccepted = false; QBenchmarkGlobalData::current->context.tag = tag; QBenchmarkGlobalData::current->context.slotName = functionName(); Q_D(QuickTestResult); delete d->benchmarkIter; d->benchmarkIter = new QTest::QBenchmarkIterationController (QTest::QBenchmarkIterationController::RunMode(runMode)); }
static QBenchmarkResult qMedian(const QList<QBenchmarkResult> &container) { const int count = container.count(); if (count == 0) return QBenchmarkResult(); if (count == 1) return container.at(0); QList<QBenchmarkResult> containerCopy = container; qSort(containerCopy); const int middle = count / 2; // ### handle even-sized containers here by doing an aritmetic mean of the two middle items. return containerCopy.at(middle); }