summaryrefslogtreecommitdiffstats
path: root/src/quicktestlib/testlib/qbenchmark.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quicktestlib/testlib/qbenchmark.cpp')
-rw-r--r--src/quicktestlib/testlib/qbenchmark.cpp308
1 files changed, 0 insertions, 308 deletions
diff --git a/src/quicktestlib/testlib/qbenchmark.cpp b/src/quicktestlib/testlib/qbenchmark.cpp
deleted file mode 100644
index 0d9670a..0000000
--- a/src/quicktestlib/testlib/qbenchmark.cpp
+++ /dev/null
@@ -1,308 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtTest module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qbenchmark.h"
-#include "qbenchmark_p.h"
-#include "qbenchmarkmetric_p.h"
-
-#ifdef QT_GUI_LIB
-#include <QtGui/qapplication.h>
-#endif
-
-#include <QtCore/qprocess.h>
-#include <QtCore/qdir.h>
-#include <QtCore/qset.h>
-#include <QtCore/qdebug.h>
-
-QT_BEGIN_NAMESPACE
-
-QBenchmarkGlobalData *QBenchmarkGlobalData::current;
-
-QBenchmarkGlobalData::QBenchmarkGlobalData()
- : measurer(0)
- , walltimeMinimum(-1)
- , iterationCount(-1)
- , medianIterationCount(-1)
- , createChart(false)
- , verboseOutput(false)
- , mode_(WallTime)
-{
- setMode(mode_);
-}
-
-QBenchmarkGlobalData::~QBenchmarkGlobalData()
-{
- delete measurer;
- QBenchmarkGlobalData::current = 0;
-}
-
-void QBenchmarkGlobalData::setMode(Mode mode)
-{
- mode_ = mode;
-
- if (measurer)
- delete measurer;
- measurer = createMeasurer();
-}
-
-QBenchmarkMeasurerBase * QBenchmarkGlobalData::createMeasurer()
-{
- QBenchmarkMeasurerBase *measurer = 0;
- if (0) {
-#ifdef QTESTLIB_USE_VALGRIND
- } else if (mode_ == CallgrindChildProcess || mode_ == CallgrindParentProcess) {
- measurer = new QBenchmarkCallgrindMeasurer;
-#endif
-#ifdef HAVE_TICK_COUNTER
- } else if (mode_ == TickCounter) {
- measurer = new QBenchmarkTickMeasurer;
-#endif
- } else if (mode_ == EventCounter) {
- measurer = new QBenchmarkEvent;
- } else {
- measurer = new QBenchmarkTimeMeasurer;
- }
- measurer->init();
- return measurer;
-}
-
-int QBenchmarkGlobalData::adjustMedianIterationCount()
-{
- if (medianIterationCount != -1) {
- return medianIterationCount;
- } else {
- return measurer->adjustMedianCount(1);
- }
-}
-
-
-QBenchmarkTestMethodData *QBenchmarkTestMethodData::current;
-
-QBenchmarkTestMethodData::QBenchmarkTestMethodData()
-:resultAccepted(false), runOnce(false), iterationCount(-1)
-{
-
-}
-
-QBenchmarkTestMethodData::~QBenchmarkTestMethodData()
-{
- QBenchmarkTestMethodData::current = 0;
-}
-
-void QBenchmarkTestMethodData::beginDataRun()
-{
- iterationCount = adjustIterationCount(1);
-}
-
-void QBenchmarkTestMethodData::endDataRun()
-{
-
-}
-
-int QBenchmarkTestMethodData::adjustIterationCount(int suggestion)
-{
- // Let the -iterations option override the measurer.
- if (QBenchmarkGlobalData::current->iterationCount != -1) {
- iterationCount = QBenchmarkGlobalData::current->iterationCount;
- } else {
- iterationCount = QBenchmarkGlobalData::current->measurer->adjustIterationCount(suggestion);
- }
-
- return iterationCount;
-}
-
-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);
-}
-
-/*!
- \class QTest::QBenchmarkIterationController
- \internal
-
- The QBenchmarkIterationController class is used by the QBENCHMARK macro to
- drive the benchmarking loop. It is repsonsible for starting and stopping
- the timing measurements as well as calling the result reporting functions.
-*/
-
-/*! \internal
-*/
-QTest::QBenchmarkIterationController::QBenchmarkIterationController(RunMode runMode)
-{
- i = 0;
- if (runMode == RunOnce)
- QBenchmarkTestMethodData::current->runOnce = true;
- QTest::beginBenchmarkMeasurement();
-}
-
-QTest::QBenchmarkIterationController::QBenchmarkIterationController()
-{
- i = 0;
- QTest::beginBenchmarkMeasurement();
-}
-
-/*! \internal
-*/
-QTest::QBenchmarkIterationController::~QBenchmarkIterationController()
-{
- const qreal result = QTest::endBenchmarkMeasurement();
- QBenchmarkTestMethodData::current->setResult(result, QBenchmarkGlobalData::current->measurer->metricType());
-}
-
-/*! \internal
-*/
-bool QTest::QBenchmarkIterationController::isDone()
-{
- if (QBenchmarkTestMethodData::current->runOnce)
- return i > 0;
- return i >= QTest::iterationCount();
-}
-
-/*! \internal
-*/
-void QTest::QBenchmarkIterationController::next()
-{
- ++i;
-}
-
-/*! \internal
-*/
-int QTest::iterationCount()
-{
- return QBenchmarkTestMethodData::current->iterationCount;
-}
-
-/*! \internal
-*/
-void QTest::setIterationCountHint(int count)
-{
- QBenchmarkTestMethodData::current->adjustIterationCount(count);
-}
-
-/*! \internal
-*/
-void QTest::setIterationCount(int count)
-{
- QBenchmarkTestMethodData::current->iterationCount = count;
- QBenchmarkTestMethodData::current->resultAccepted = true;
-}
-
-/*! \internal
-*/
-void QTest::beginBenchmarkMeasurement()
-{
- QBenchmarkGlobalData::current->measurer->start();
- // the clock is ticking after the line above, don't add code here.
-}
-
-/*! \internal
-*/
-quint64 QTest::endBenchmarkMeasurement()
-{
- // the clock is ticking before the line below, don't add code here.
- return QBenchmarkGlobalData::current->measurer->stop();
-}
-
-/*!
- Sets the benchmark result for this test function to \a result.
-
- Use this function if you want to report benchmark results without
- using the QBENCHMARK macro. Use \a metric to specify how QTestLib
- should interpret the results.
-
- The context for the result will be the test function name and any
- data tag from the _data function. This function can only be called
- once in each test function, subsequent calls will replace the
- earlier reported results.
-
- Note that the -iterations command line argument has no effect
- on test functions without the QBENCHMARK macro.
-
- \since 4.7
-*/
-void QTest::setBenchmarkResult(qreal result, QTest::QBenchmarkMetric metric)
-{
- QBenchmarkTestMethodData::current->setResult(result, metric, false);
-}
-
-template <typename T>
-Q_TYPENAME T::value_type qAverage(const T &container)
-{
- Q_TYPENAME T::const_iterator it = container.constBegin();
- Q_TYPENAME T::const_iterator end = container.constEnd();
- Q_TYPENAME T::value_type acc = Q_TYPENAME T::value_type();
- int count = 0;
- while (it != end) {
- acc += *it;
- ++it;
- ++count;
- }
- return acc / count;
-}
-
-QT_END_NAMESPACE