From 4c0d1383d11039d42ad6cf1579f9512eb7461db7 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 8 Nov 2023 17:23:14 +0100 Subject: [PATCH] tst_bench_QImageReader: add a benchmark for raw QFatoryLoader operations This is Eirik's QtCore-only QTBUG-114253 reproducer added to the nearest fitting existing benchmark. Done-with: Eirik Aavitsland Pick-to: 5.15 Task-number: QTBUG-114253 Change-Id: Iba68bedebae908af497267860e2b230db269787e Reviewed-by: Eirik Aavitsland (cherry picked from commit a5bcb41678ad7fe78ad3fac066094f6a614b6906) Reviewed-by: Qt Cherry-pick Bot (cherry picked from commit 66cd58b2a569ae3423c319a65ab4f198c1c62714) (cherry picked from commit 1c35f22097a5e6d9234a23567aa3f08992d81770) --- .../gui/image/qimagereader/CMakeLists.txt | 1 + .../qimagereader/tst_bench_qimagereader.cpp | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/tests/benchmarks/gui/image/qimagereader/CMakeLists.txt b/tests/benchmarks/gui/image/qimagereader/CMakeLists.txt index d5084a70184..29d40d9a5ca 100644 --- a/tests/benchmarks/gui/image/qimagereader/CMakeLists.txt +++ b/tests/benchmarks/gui/image/qimagereader/CMakeLists.txt @@ -8,6 +8,7 @@ qt_internal_add_benchmark(tst_bench_qimagereader SOURCES tst_bench_qimagereader.cpp PUBLIC_LIBRARIES + Qt::CorePrivate Qt::Gui Qt::Test ) diff --git a/tests/benchmarks/gui/image/qimagereader/tst_bench_qimagereader.cpp b/tests/benchmarks/gui/image/qimagereader/tst_bench_qimagereader.cpp index 2903d5d9edb..7cdc0a2d3e8 100644 --- a/tests/benchmarks/gui/image/qimagereader/tst_bench_qimagereader.cpp +++ b/tests/benchmarks/gui/image/qimagereader/tst_bench_qimagereader.cpp @@ -36,6 +36,7 @@ #include #include +#include #include #include @@ -55,6 +56,9 @@ public slots: void initTestCase(); private slots: + void rawFactoryLoader_keyMap(); + void rawFactoryLoader_instance(); + void readImage_data(); void readImage(); @@ -70,6 +74,7 @@ private slots: private: QList< QPair > images; // filename, format QString prefix; + QFactoryLoader m_loader{QImageIOHandlerFactoryInterface_iid, "/imageformats"}; }; tst_bench_QImageReader::tst_bench_QImageReader() @@ -106,6 +111,30 @@ void tst_bench_QImageReader::initTestCase() QFAIL("Can't find images directory!"); } +void tst_bench_QImageReader::rawFactoryLoader_keyMap() +{ + if (m_loader.keyMap().isEmpty()) + QSKIP("No image plugins found."); + + QBENCHMARK { + [[maybe_unused]] auto r = m_loader.keyMap(); + } +} + +void tst_bench_QImageReader::rawFactoryLoader_instance() +{ + if (m_loader.keyMap().isEmpty()) + QSKIP("No image plugins found."); + + const auto numInstances = m_loader.keyMap().uniqueKeys().size(); + + QBENCHMARK { + for (int i = 0; i < numInstances; ++i) + delete m_loader.instance(i); + } +} + + void tst_bench_QImageReader::readImage_data() { QTest::addColumn("fileName");