Replace QPerformanceTimer with QElapsedTimer.
authorMichael Brasser <michael.brasser@nokia.com>
Thu, 2 Jun 2011 23:50:04 +0000 (09:50 +1000)
committerMichael Brasser <michael.brasser@nokia.com>
Thu, 2 Jun 2011 23:50:04 +0000 (09:50 +1000)
QElapsedTimer has added a nsecsElapsed() function, so QPerformanceTimer
is no longer needed.

Reviewed-by: Charles Yin
src/declarative/debugger/qdeclarativedebugtrace.cpp
src/declarative/debugger/qdeclarativedebugtrace_p.h
src/declarative/qml/qml.pri
src/declarative/qml/qperformancetimer.cpp [deleted file]
src/declarative/qml/qperformancetimer_p.h [deleted file]
tests/auto/declarative/qperformancetimer/qperformancetimer.pro [deleted file]
tests/auto/declarative/qperformancetimer/tst_qperformancetimer.cpp [deleted file]
tests/benchmarks/declarative/qdeclarativedebugtrace/qdeclarativedebugtrace.pro [new file with mode: 0644]
tests/benchmarks/declarative/qdeclarativedebugtrace/tst_qdeclarativedebugtrace.cpp [moved from tests/benchmarks/declarative/qperformancetimer/tst_qperformancetimer.cpp with 80% similarity]
tests/benchmarks/declarative/qperformancetimer/qperformancetimer.pro [deleted file]

index 2772d38..0a46d68 100644 (file)
@@ -49,7 +49,7 @@ Q_GLOBAL_STATIC(QDeclarativeDebugTrace, traceInstance);
 
 // convert to a QByteArray that can be sent to the debug client
 // use of QDataStream can skew results if m_deferredSend == false
-//     (see tst_qperformancetimer::trace() benchmark)
+//     (see tst_qdeclarativedebugtrace::trace() benchmark)
 QByteArray QDeclarativeDebugData::toByteArray() const
 {
     QByteArray data;
@@ -122,7 +122,7 @@ void QDeclarativeDebugTrace::addEventImpl(EventType event)
     if (status() != Enabled || !m_enabled)
         return;
 
-    QDeclarativeDebugData ed = {m_timer.elapsed(), (int)Event, (int)event, QString(), -1};
+    QDeclarativeDebugData ed = {m_timer.nsecsElapsed(), (int)Event, (int)event, QString(), -1};
     processMessage(ed);
 }
 
@@ -131,7 +131,7 @@ void QDeclarativeDebugTrace::startRangeImpl(RangeType range)
     if (status() != Enabled || !m_enabled)
         return;
 
-    QDeclarativeDebugData rd = {m_timer.elapsed(), (int)RangeStart, (int)range, QString(), -1};
+    QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeStart, (int)range, QString(), -1};
     processMessage(rd);
 }
 
@@ -140,7 +140,7 @@ void QDeclarativeDebugTrace::rangeDataImpl(RangeType range, const QString &rData
     if (status() != Enabled || !m_enabled)
         return;
 
-    QDeclarativeDebugData rd = {m_timer.elapsed(), (int)RangeData, (int)range, rData, -1};
+    QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeData, (int)range, rData, -1};
     processMessage(rd);
 }
 
@@ -149,7 +149,7 @@ void QDeclarativeDebugTrace::rangeDataImpl(RangeType range, const QUrl &rData)
     if (status() != Enabled || !m_enabled)
         return;
 
-    QDeclarativeDebugData rd = {m_timer.elapsed(), (int)RangeData, (int)range, rData.toString(QUrl::FormattingOption(0x100)), -1};
+    QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeData, (int)range, rData.toString(QUrl::FormattingOption(0x100)), -1};
     processMessage(rd);
 }
 
@@ -158,7 +158,7 @@ void QDeclarativeDebugTrace::rangeLocationImpl(RangeType range, const QString &f
     if (status() != Enabled || !m_enabled)
         return;
 
-    QDeclarativeDebugData rd = {m_timer.elapsed(), (int)RangeLocation, (int)range, fileName, line};
+    QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeLocation, (int)range, fileName, line};
     processMessage(rd);
 }
 
@@ -167,7 +167,7 @@ void QDeclarativeDebugTrace::rangeLocationImpl(RangeType range, const QUrl &file
     if (status() != Enabled || !m_enabled)
         return;
 
-    QDeclarativeDebugData rd = {m_timer.elapsed(), (int)RangeLocation, (int)range, fileName.toString(QUrl::FormattingOption(0x100)), line};
+    QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeLocation, (int)range, fileName.toString(QUrl::FormattingOption(0x100)), line};
     processMessage(rd);
 }
 
@@ -176,7 +176,7 @@ void QDeclarativeDebugTrace::endRangeImpl(RangeType range)
     if (status() != Enabled || !m_enabled)
         return;
 
-    QDeclarativeDebugData rd = {m_timer.elapsed(), (int)RangeEnd, (int)range, QString(), -1};
+    QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeEnd, (int)range, QString(), -1};
     processMessage(rd);
 }
 
index 30aa772..6681d28 100644 (file)
@@ -43,7 +43,7 @@
 #define QDECLARATIVEDEBUGTRACE_P_H
 
 #include <private/qdeclarativedebugservice_p.h>
-#include <private/qperformancetimer_p.h>
+#include <QtCore/qelapsedtimer.h>
 
 QT_BEGIN_HEADER
 
@@ -117,7 +117,7 @@ private:
     void endRangeImpl(RangeType);
     void processMessage(const QDeclarativeDebugData &);
     void sendMessages();
-    QPerformanceTimer m_timer;
+    QElapsedTimer m_timer;
     bool m_enabled;
     bool m_deferredSend;
     bool m_messageReceived;
index 62c1f97..78fb063 100644 (file)
@@ -54,8 +54,7 @@ SOURCES += \
     $$PWD/qdeclarativedirparser.cpp \
     $$PWD/qdeclarativeextensionplugin.cpp \
     $$PWD/qdeclarativeimport.cpp \
-    $$PWD/qdeclarativelist.cpp \ 
-    $$PWD/qperformancetimer.cpp \
+    $$PWD/qdeclarativelist.cpp \
     $$PWD/qintrusivelist.cpp \
 
 HEADERS += \
@@ -129,7 +128,6 @@ HEADERS += \
     $$PWD/qdeclarativeextensioninterface.h \
     $$PWD/qdeclarativeimport_p.h \
     $$PWD/qdeclarativeextensionplugin.h \
-    $$PWD/qperformancetimer_p.h \
     $$PWD/qintrusivelist_p.h \
 
 QT += sql
diff --git a/src/declarative/qml/qperformancetimer.cpp b/src/declarative/qml/qperformancetimer.cpp
deleted file mode 100644 (file)
index 9fc0d35..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtDeclarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** 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.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qperformancetimer_p.h"
-
-#if defined(Q_OS_MAC)
-#include <sys/time.h>
-#include <unistd.h>
-#include <mach/mach_time.h>
-#elif defined(Q_OS_UNIX)
-#include <sys/time.h>
-#include <time.h>
-#include <unistd.h>
-#elif defined(Q_OS_SYMBIAN)
-#include <e32std.h>
-#include <sys/time.h>
-#include <hal.h>
-#elif defined(Q_OS_WIN)
-#include <windows.h>
-#endif
-
-// mac/unix code heavily copied from QElapsedTimer
-
-QT_BEGIN_NAMESPACE
-
-////////////////////////////// Mac //////////////////////////////
-#if defined(Q_OS_MAC)
-
-static mach_timebase_info_data_t info = {0,0};
-static qint64 absoluteToNSecs(qint64 cpuTime)
-{
-    if (info.denom == 0)
-        mach_timebase_info(&info);
-    qint64 nsecs = cpuTime * info.numer / info.denom;
-    return nsecs;
-}
-
-void QPerformanceTimer::start()
-{
-    t1 = mach_absolute_time();
-}
-
-qint64 QPerformanceTimer::elapsed() const
-{
-    uint64_t cpu_time = mach_absolute_time();
-    return absoluteToNSecs(cpu_time - t1);
-}
-
-////////////////////////////// Unix //////////////////////////////
-#elif defined(Q_OS_UNIX)
-
-#if defined(QT_NO_CLOCK_MONOTONIC) || defined(QT_BOOTSTRAPPED)
-// turn off the monotonic clock
-# ifdef _POSIX_MONOTONIC_CLOCK
-#  undef _POSIX_MONOTONIC_CLOCK
-# endif
-# define _POSIX_MONOTONIC_CLOCK -1
-#endif
-
-#if (_POSIX_MONOTONIC_CLOCK-0 != 0)
-static const bool monotonicClockChecked = true;
-static const bool monotonicClockAvailable = _POSIX_MONOTONIC_CLOCK > 0;
-#else
-static int monotonicClockChecked = false;
-static int monotonicClockAvailable = false;
-#endif
-
-#ifdef Q_CC_GNU
-# define is_likely(x) __builtin_expect((x), 1)
-#else
-# define is_likely(x) (x)
-#endif
-#define load_acquire(x) ((volatile const int&)(x))
-#define store_release(x,v) ((volatile int&)(x) = (v))
-
-static void unixCheckClockType()
-{
-#if (_POSIX_MONOTONIC_CLOCK-0 == 0)
-    if (is_likely(load_acquire(monotonicClockChecked)))
-        return;
-
-# if defined(_SC_MONOTONIC_CLOCK)
-    // detect if the system support monotonic timers
-    long x = sysconf(_SC_MONOTONIC_CLOCK);
-    store_release(monotonicClockAvailable, x >= 200112L);
-# endif
-
-    store_release(monotonicClockChecked, true);
-#endif
-}
-
-static inline void do_gettime(qint64 *sec, qint64 *frac)
-{
-#if (_POSIX_MONOTONIC_CLOCK-0 >= 0)
-    unixCheckClockType();
-    if (is_likely(monotonicClockAvailable)) {
-        timespec ts;
-        clock_gettime(CLOCK_MONOTONIC, &ts);
-        *sec = ts.tv_sec;
-        *frac = ts.tv_nsec;
-        return;
-    }
-#endif
-    *sec = 0;
-    *frac = 0;
-}
-
-void QPerformanceTimer::start()
-{
-    do_gettime(&t1, &t2);
-}
-
-qint64 QPerformanceTimer::elapsed() const
-{
-    qint64 sec, frac;
-    do_gettime(&sec, &frac);
-    sec = sec - t1;
-    frac = frac - t2;
-
-    return sec * Q_INT64_C(1000000000) + frac;
-}
-
-////////////////////////////// Symbian //////////////////////////////
-#elif defined(Q_OS_SYMBIAN)
-
-static qint64 getTimeFromTick(quint64 elapsed)
-{
-    static TInt freq;
-    if (!freq)
-        HAL::Get(HALData::EFastCounterFrequency, freq);
-
-    // ### not sure on units
-    return elapsed / freq;
-}
-
-void QPerformanceTimer::start()
-{
-    t1 = User::FastCounter();
-}
-
-qint64 QPerformanceTimer::elapsed() const
-{
-    return getTimeFromTick(User::FastCounter() - t1);
-}
-
-////////////////////////////// Windows //////////////////////////////
-#elif defined(Q_OS_WIN)
-
-static qint64 getTimeFromTick(quint64 elapsed)
-{
-    static LARGE_INTEGER freq;
-    if (!freq.QuadPart)
-        QueryPerformanceFrequency(&freq);
-    return 1000000000 * elapsed / freq.QuadPart;
-}
-
-void QPerformanceTimer::start()
-{
-    LARGE_INTEGER li;
-    QueryPerformanceCounter(&li);
-    t1 = li.QuadPart;
-}
-
-qint64 QPerformanceTimer::elapsed() const
-{
-    LARGE_INTEGER li;
-    QueryPerformanceCounter(&li);
-    return getTimeFromTick(li.QuadPart - t1);
-}
-
-////////////////////////////// Default //////////////////////////////
-#else
-
-// default implementation (no hi-perf timer) does nothing
-void QPerformanceTimer::start()
-{
-}
-
-qint64 QPerformanceTimer::elapsed() const
-{
-    return 0;
-}
-
-#endif
-
-QT_END_NAMESPACE
-
-
diff --git a/src/declarative/qml/qperformancetimer_p.h b/src/declarative/qml/qperformancetimer_p.h
deleted file mode 100644 (file)
index 48b286e..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtDeclarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** 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.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QPERFORMANCETIMER_P_H
-#define QPERFORMANCETIMER_P_H
-
-//
-//  W A R N I N G
-//  -------------
-//
-// This file is not part of the Qt API.  It exists for the convenience
-// of moc.  This header file may change from version to version without notice,
-// or even be removed.
-//
-// We mean it.
-//
-
-#include <QtCore/qglobal.h>
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Declarative)
-
-class Q_AUTOTEST_EXPORT QPerformanceTimer
-{
-public:
-    void start();
-    qint64 elapsed() const;
-
-private:
-    qint64 t1;
-    qint64 t2;
-};
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // QPERFORMANCETIMER_P_H
diff --git a/tests/auto/declarative/qperformancetimer/qperformancetimer.pro b/tests/auto/declarative/qperformancetimer/qperformancetimer.pro
deleted file mode 100644 (file)
index fb0783d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-load(qttest_p4)
-contains(QT_CONFIG,declarative): QT += declarative
-SOURCES += tst_qperformancetimer.cpp
-macx:CONFIG -= app_bundle
-
-CONFIG += parallel_test
-
-QT += core-private gui-private declarative-private
diff --git a/tests/auto/declarative/qperformancetimer/tst_qperformancetimer.cpp b/tests/auto/declarative/qperformancetimer/tst_qperformancetimer.cpp
deleted file mode 100644 (file)
index b29ebe3..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** 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.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <private/qperformancetimer_p.h>
-#include <QObject>
-#include <qtest.h>
-
-class tst_qperformancetimer : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_qperformancetimer() {}
-
-private slots:
-    void units();
-};
-
-void tst_qperformancetimer::units()
-{
-    QPerformanceTimer timer;
-    timer.start();
-    QTest::qWait(300);
-    qint64 elapsed = timer.elapsed();
-    QVERIFY(elapsed > 300000000 && elapsed < 310000000);
-}
-
-QTEST_MAIN(tst_qperformancetimer)
-
-#include "tst_qperformancetimer.moc"
diff --git a/tests/benchmarks/declarative/qdeclarativedebugtrace/qdeclarativedebugtrace.pro b/tests/benchmarks/declarative/qdeclarativedebugtrace/qdeclarativedebugtrace.pro
new file mode 100644 (file)
index 0000000..e9aea4f
--- /dev/null
@@ -0,0 +1,8 @@
+load(qttest_p4)
+QT += declarative
+TEMPLATE = app
+TARGET = tst_qdeclarativedebugtrace
+macx:CONFIG -= app_bundle
+
+SOURCES += tst_qdeclarativedebugtrace.cpp
+
 **
 ****************************************************************************/
 
-#include <private/qperformancetimer_p.h>
+#include <QtCore/QElapsedTimer>
 #include <QObject>
 #include <qtest.h>
 
-class tst_qperformancetimer : public QObject
+class tst_qdeclarativedebugtrace : public QObject
 {
     Q_OBJECT
 
 public:
-    tst_qperformancetimer() {}
+    tst_qdeclarativedebugtrace() {}
 
 private slots:
     void all();
@@ -57,35 +57,35 @@ private slots:
     void trace();
 };
 
-void tst_qperformancetimer::all()
+void tst_qdeclarativedebugtrace::all()
 {
     QBENCHMARK {
-        QPerformanceTimer t;
+        QElapsedTimer t;
         t.start();
-        t.elapsed();
+        t.nsecsElapsed();
     }
 }
 
-void tst_qperformancetimer::startElapsed()
+void tst_qdeclarativedebugtrace::startElapsed()
 {
-    QPerformanceTimer t;
+    QElapsedTimer t;
     QBENCHMARK {
         t.start();
-        t.elapsed();
+        t.nsecsElapsed();
     }
 }
 
-void tst_qperformancetimer::doubleElapsed()
+void tst_qdeclarativedebugtrace::doubleElapsed()
 {
-    QPerformanceTimer t;
+    QElapsedTimer t;
     t.start();
     QBENCHMARK {
-        t.elapsed();
-        t.elapsed();
+        t.nsecsElapsed();
+        t.nsecsElapsed();
     }
 }
 
-void tst_qperformancetimer::trace()
+void tst_qdeclarativedebugtrace::trace()
 {
     QString s("A decent sized string of text here.");
     QBENCHMARK {
@@ -95,6 +95,6 @@ void tst_qperformancetimer::trace()
     }
 }
 
-QTEST_MAIN(tst_qperformancetimer)
+QTEST_MAIN(tst_qdeclarativedebugtrace)
 
-#include "tst_qperformancetimer.moc"
+#include "tst_qdeclarativedebugtrace.moc"
diff --git a/tests/benchmarks/declarative/qperformancetimer/qperformancetimer.pro b/tests/benchmarks/declarative/qperformancetimer/qperformancetimer.pro
deleted file mode 100644 (file)
index a39cd3d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-load(qttest_p4)
-QT += declarative
-TEMPLATE = app
-TARGET = tst_qperformancetimer
-macx:CONFIG -= app_bundle
-
-SOURCES += tst_qperformancetimer.cpp
-