summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks
diff options
context:
space:
mode:
authorKari Oikarinen <kari.oikarinen@qt.io>2018-03-02 16:36:06 +0200
committerSami Nurmenniemi <sami.nurmenniemi@qt.io>2018-03-07 19:43:52 +0000
commitcaa5a20479bd58fda4380181691f772a1f3c1da4 (patch)
treeafc8c79b447bac6f2c7fce702f72095ab89c070e /tests/benchmarks
parente16c6dfb7286264ccdfd37d8e74c97f13ece7835 (diff)
Make a benchmark out of tst_QObjectPerformance::emitToManyReceivers
The test has been flaky on top of QEMU. The test is clearly a sort of manually rolled benchmark, not a regular autotest. Remove the test and replace it with a benchmark in QObjectBenchmark. Task-number: QTBUG-66823 Task-number: QTBUG-66216 Change-Id: I7a48293023f32141eed6fea50fbb63af18933a8f Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'tests/benchmarks')
-rw-r--r--tests/benchmarks/corelib/kernel/qobject/main.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/benchmarks/corelib/kernel/qobject/main.cpp b/tests/benchmarks/corelib/kernel/qobject/main.cpp
index c11b13b7ea..04ca69ad3b 100644
--- a/tests/benchmarks/corelib/kernel/qobject/main.cpp
+++ b/tests/benchmarks/corelib/kernel/qobject/main.cpp
@@ -43,6 +43,8 @@ Q_OBJECT
private slots:
void signal_slot_benchmark();
void signal_slot_benchmark_data();
+ void signal_many_receivers();
+ void signal_many_receivers_data();
void qproperty_benchmark_data();
void qproperty_benchmark();
void dynamic_property_benchmark();
@@ -127,6 +129,28 @@ void QObjectBenchmark::signal_slot_benchmark()
}
}
+void QObjectBenchmark::signal_many_receivers_data()
+{
+ QTest::addColumn<int>("receiverCount");
+ QTest::newRow("100 receivers") << 100;
+ QTest::newRow("1 000 receivers") << 1000;
+ QTest::newRow("10 000 receivers") << 10000;
+}
+
+void QObjectBenchmark::signal_many_receivers()
+{
+ QFETCH(int, receiverCount);
+ Object sender;
+ std::vector<Object> receivers(receiverCount);
+
+ for (Object &receiver : receivers)
+ QObject::connect(&sender, &Object::signal0, &receiver, &Object::slot0);
+
+ QBENCHMARK {
+ sender.emitSignal0();
+ }
+}
+
void QObjectBenchmark::qproperty_benchmark_data()
{
QTest::addColumn<QByteArray>("name");