diff options
Diffstat (limited to 'tests/benchmarks/corelib/kernel/qwineventnotifier/main.cpp')
-rw-r--r-- | tests/benchmarks/corelib/kernel/qwineventnotifier/main.cpp | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/tests/benchmarks/corelib/kernel/qwineventnotifier/main.cpp b/tests/benchmarks/corelib/kernel/qwineventnotifier/main.cpp deleted file mode 100644 index 926ed5acdb..0000000000 --- a/tests/benchmarks/corelib/kernel/qwineventnotifier/main.cpp +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QTest> -#include <QtCore/qglobal.h> -#include <QtCore/qwineventnotifier.h> -#include <QtCore/qeventloop.h> -#include <QtCore/qvector.h> -#include <QtCore/qelapsedtimer.h> -#include <QtCore/qt_windows.h> - -class QWinEventNotifierBenchmark : public QObject -{ - Q_OBJECT - -private slots: - void waves_data(); - void waves(); -}; - -class EventsFactory : public QObject -{ - Q_OBJECT - -public: - explicit EventsFactory(int waves, int notifiers, int iterations) - : numberOfWaves(waves), numberOfNotifiers(notifiers), - numberOfIterations(iterations) - { - events.resize(notifiers); - for (int i = 0; i < notifiers; ++i) { - events[i] = CreateEvent(NULL, TRUE, FALSE, NULL); - QVERIFY(events[i] != NULL); - QWinEventNotifier *notifier = new QWinEventNotifier(events[i], this); - Q_CHECK_PTR(notifier); - - connect(notifier, &QWinEventNotifier::activated, [i, this]() { - ResetEvent(this->events[i]); - if (--this->numberOfIterations == 0) - this->eventLoop.quit(); - else - SetEvent(this->events[(i + 1) % this->numberOfNotifiers]); - }); - - connect(this, &EventsFactory::stop, [notifier]() { - notifier->setEnabled(false); - }); - } - } - virtual ~EventsFactory() - { - for (auto event : events) - CloseHandle(event); - } - - void run() - { - Q_ASSERT(numberOfWaves != 0); - - int offset = 0; - for (int i = 0; i < numberOfWaves; ++i) { - SetEvent(events[offset]); - offset += qMax(1, numberOfNotifiers / numberOfWaves); - offset %= numberOfNotifiers; - } - eventLoop.exec(); - } - -signals: - void stop(); - -protected: - QVector<HANDLE> events; - QEventLoop eventLoop; - int numberOfWaves; - int numberOfNotifiers; - int numberOfIterations; -}; - -void QWinEventNotifierBenchmark::waves_data() -{ - QTest::addColumn<int>("waves"); - QTest::addColumn<int>("notifiers"); - for (int waves : {1, 3, 10}) { - for (int notifiers : {10, 100, 1000}) - QTest::addRow("waves: %d, notifiers: %d", waves, notifiers) << waves << notifiers; - } -} - -void QWinEventNotifierBenchmark::waves() -{ - QFETCH(int, waves); - QFETCH(int, notifiers); - - const int iterations = 100000; - - EventsFactory factory(waves, notifiers, iterations); - - QElapsedTimer timer; - timer.start(); - - factory.run(); - - qDebug("Elapsed time: %.1f s", timer.elapsed() / 1000.0); - - emit factory.stop(); -} - -QTEST_MAIN(QWinEventNotifierBenchmark) - -#include "main.moc" |