From a5bcb41678ad7fe78ad3fac066094f6a614b6906 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: 6.6 6.5 6.2 5.15 Task-number: QTBUG-114253 Change-Id: Iba68bedebae908af497267860e2b230db269787e Reviewed-by: Eirik Aavitsland --- .../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 890e4f7f29b..ba3c2a7ec4c 100644 --- a/tests/benchmarks/gui/image/qimagereader/CMakeLists.txt +++ b/tests/benchmarks/gui/image/qimagereader/CMakeLists.txt @@ -9,6 +9,7 @@ qt_internal_add_benchmark(tst_bench_qimagereader SOURCES tst_bench_qimagereader.cpp 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 6362e16b298..dab38244a79 100644 --- a/tests/benchmarks/gui/image/qimagereader/tst_bench_qimagereader.cpp +++ b/tests/benchmarks/gui/image/qimagereader/tst_bench_qimagereader.cpp @@ -11,6 +11,7 @@ #include #include +#include #include #include @@ -30,6 +31,9 @@ public slots: void initTestCase(); private slots: + void rawFactoryLoader_keyMap(); + void rawFactoryLoader_instance(); + void readImage_data(); void readImage(); @@ -45,6 +49,7 @@ private slots: private: QList< QPair > images; // filename, format QString prefix; + QFactoryLoader m_loader{QImageIOHandlerFactoryInterface_iid, "/imageformats"}; }; tst_bench_QImageReader::tst_bench_QImageReader() @@ -81,6 +86,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");