From caa5a20479bd58fda4380181691f772a1f3c1da4 Mon Sep 17 00:00:00 2001 From: Kari Oikarinen Date: Fri, 2 Mar 2018 16:36:06 +0200 Subject: 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) --- tests/benchmarks/corelib/kernel/qobject/main.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'tests/benchmarks/corelib/kernel') 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("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 receivers(receiverCount); + + for (Object &receiver : receivers) + QObject::connect(&sender, &Object::signal0, &receiver, &Object::slot0); + + QBENCHMARK { + sender.emitSignal0(); + } +} + void QObjectBenchmark::qproperty_benchmark_data() { QTest::addColumn("name"); -- cgit v1.2.3