diff options
author | Kari Oikarinen <kari.oikarinen@qt.io> | 2018-03-02 16:36:06 +0200 |
---|---|---|
committer | Sami Nurmenniemi <sami.nurmenniemi@qt.io> | 2018-03-07 19:43:52 +0000 |
commit | caa5a20479bd58fda4380181691f772a1f3c1da4 (patch) | |
tree | afc8c79b447bac6f2c7fce702f72095ab89c070e /tests/benchmarks/corelib | |
parent | e16c6dfb7286264ccdfd37d8e74c97f13ece7835 (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/corelib')
-rw-r--r-- | tests/benchmarks/corelib/kernel/qobject/main.cpp | 24 |
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"); |