From aa49ad58ad57809e0724f1c4152d925bcbd63856 Mon Sep 17 00:00:00 2001 From: Sergio Ahumada Date: Tue, 30 Oct 2012 19:32:39 +0100 Subject: test: Moving tst_QMimeDatabase::inheritsPerformance() test tst_QMimeDatabase::inheritsPerformance() is not an unit test but a performance test, so moving it from 'tests/auto/corelib/mimetypes/qmimedatabase' to 'tests/benchmarks/corelib/mimetypes/qmimedatabase' Change-Id: I59e84f61559023659f101666683870f2ca1d2034 Reviewed-by: David Faure (KDE) Reviewed-by: Rohan McGovern --- tests/benchmarks/corelib/corelib.pro | 1 + tests/benchmarks/corelib/mimetypes/mimetypes.pro | 3 + .../corelib/mimetypes/qmimedatabase/main.cpp | 87 ++++++++++++++++++++++ .../mimetypes/qmimedatabase/qmimedatabase.pro | 6 ++ 4 files changed, 97 insertions(+) create mode 100644 tests/benchmarks/corelib/mimetypes/mimetypes.pro create mode 100644 tests/benchmarks/corelib/mimetypes/qmimedatabase/main.cpp create mode 100644 tests/benchmarks/corelib/mimetypes/qmimedatabase/qmimedatabase.pro (limited to 'tests/benchmarks') diff --git a/tests/benchmarks/corelib/corelib.pro b/tests/benchmarks/corelib/corelib.pro index da5247cc42..b5781ad49e 100644 --- a/tests/benchmarks/corelib/corelib.pro +++ b/tests/benchmarks/corelib/corelib.pro @@ -2,6 +2,7 @@ TEMPLATE = subdirs SUBDIRS = \ io \ json \ + mimetypes \ kernel \ thread \ tools \ diff --git a/tests/benchmarks/corelib/mimetypes/mimetypes.pro b/tests/benchmarks/corelib/mimetypes/mimetypes.pro new file mode 100644 index 0000000000..14dc5f0e10 --- /dev/null +++ b/tests/benchmarks/corelib/mimetypes/mimetypes.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs +SUBDIRS = \ + qmimedatabase \ diff --git a/tests/benchmarks/corelib/mimetypes/qmimedatabase/main.cpp b/tests/benchmarks/corelib/mimetypes/qmimedatabase/main.cpp new file mode 100644 index 0000000000..4a4d25d201 --- /dev/null +++ b/tests/benchmarks/corelib/mimetypes/qmimedatabase/main.cpp @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +class tst_QMimeDatabase: public QObject +{ + + Q_OBJECT + +private slots: + void inheritsPerformance(); +}; + +void tst_QMimeDatabase::inheritsPerformance() +{ + // Check performance of inherits(). + // This benchmark (which started in 2009 in kmimetypetest.cpp) uses 40 mimetypes. + QStringList mimeTypes; + mimeTypes << QLatin1String("image/jpeg") << QLatin1String("image/png") << QLatin1String("image/tiff") << QLatin1String("text/plain") << QLatin1String("text/html"); + mimeTypes += mimeTypes; + mimeTypes += mimeTypes; + mimeTypes += mimeTypes; + QCOMPARE(mimeTypes.count(), 40); + QMimeDatabase db; + QMimeType mime = db.mimeTypeForName(QString::fromLatin1("text/x-chdr")); + QVERIFY(mime.isValid()); + QBENCHMARK { + QString match; + foreach (const QString &mt, mimeTypes) { + if (mime.inherits(mt)) { + match = mt; + // of course there would normally be a "break" here, but we're testing worse-case + // performance here + } + } + QCOMPARE(match, QString::fromLatin1("text/plain")); + } + // Numbers from 2011, in release mode: + // KDE 4.7 numbers: 0.21 msec / 494,000 ticks / 568,345 instr. loads per iteration + // QMimeBinaryProvider (with Qt 5): 0.16 msec / NA / 416,049 instr. reads per iteration + // QMimeXmlProvider (with Qt 5): 0.062 msec / NA / 172,889 instr. reads per iteration + // (but the startup time is way higher) + // And memory usage is flat at 200K with QMimeBinaryProvider, while it peaks at 6 MB when + // parsing XML, and then keeps being around 4.5 MB for all the in-memory hashes. +} + +QTEST_MAIN(tst_QMimeDatabase) +#include "main.moc" diff --git a/tests/benchmarks/corelib/mimetypes/qmimedatabase/qmimedatabase.pro b/tests/benchmarks/corelib/mimetypes/qmimedatabase/qmimedatabase.pro new file mode 100644 index 0000000000..0a0d9b1193 --- /dev/null +++ b/tests/benchmarks/corelib/mimetypes/qmimedatabase/qmimedatabase.pro @@ -0,0 +1,6 @@ +QT = core testlib + +TARGET = tst_bench_qmimedatabase +SOURCES = main.cpp + +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 -- cgit v1.2.3