summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks/corelib/kernel/qobject
diff options
context:
space:
mode:
Diffstat (limited to 'tests/benchmarks/corelib/kernel/qobject')
-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");