mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-03 15:55:27 +08:00
qt 6.5.1 original
This commit is contained in:
5
tests/benchmarks/gui/kernel/CMakeLists.txt
Normal file
5
tests/benchmarks/gui/kernel/CMakeLists.txt
Normal file
@ -0,0 +1,5 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
add_subdirectory(qguimetatype)
|
||||
add_subdirectory(qguivariant)
|
14
tests/benchmarks/gui/kernel/qguimetatype/CMakeLists.txt
Normal file
14
tests/benchmarks/gui/kernel/qguimetatype/CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qguimetatype Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qguimetatype
|
||||
SOURCES
|
||||
tst_qguimetatype.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
)
|
@ -0,0 +1,83 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qtest.h>
|
||||
#include <QtCore/qmetatype.h>
|
||||
#include <QScopeGuard>
|
||||
|
||||
class tst_QGuiMetaType : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private slots:
|
||||
void constructInPlace_data();
|
||||
void constructInPlace();
|
||||
void constructInPlaceCopy_data();
|
||||
void constructInPlaceCopy();
|
||||
private:
|
||||
void constructableGuiTypes();
|
||||
};
|
||||
|
||||
|
||||
void tst_QGuiMetaType::constructableGuiTypes()
|
||||
{
|
||||
QTest::addColumn<int>("typeId");
|
||||
for (int i = QMetaType::FirstGuiType; i <= QMetaType::LastGuiType; ++i) {
|
||||
if (QMetaType metaType(i); metaType.isValid())
|
||||
QTest::newRow(metaType.name()) << i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void tst_QGuiMetaType::constructInPlace_data()
|
||||
{
|
||||
constructableGuiTypes();
|
||||
}
|
||||
|
||||
void tst_QGuiMetaType::constructInPlace()
|
||||
{
|
||||
QFETCH(int, typeId);
|
||||
QMetaType type(typeId);
|
||||
int size = type.sizeOf();
|
||||
void *storage = qMallocAligned(size, 2 * sizeof(qlonglong));
|
||||
auto cleanUp = qScopeGuard([&]() {
|
||||
qFreeAligned(storage);
|
||||
});
|
||||
QCOMPARE(type.construct(storage, /*copy=*/0), storage);
|
||||
type.destruct(storage);
|
||||
QBENCHMARK {
|
||||
for (int i = 0; i < 100000; ++i) {
|
||||
type.construct(storage, /*copy=*/0);
|
||||
type.destruct(storage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QGuiMetaType::constructInPlaceCopy_data()
|
||||
{
|
||||
constructableGuiTypes();
|
||||
}
|
||||
|
||||
void tst_QGuiMetaType::constructInPlaceCopy()
|
||||
{
|
||||
QFETCH(int, typeId);
|
||||
QMetaType type(typeId);
|
||||
int size = type.sizeOf();
|
||||
void *storage = qMallocAligned(size, 2 * sizeof(qlonglong));
|
||||
void *other = type.create();
|
||||
auto cleanUp = qScopeGuard([&]() {
|
||||
type.destroy(other);
|
||||
qFreeAligned(storage);
|
||||
});
|
||||
QCOMPARE(type.construct(storage, other), storage);
|
||||
type.destruct(storage);
|
||||
QBENCHMARK {
|
||||
for (int i = 0; i < 100000; ++i) {
|
||||
type.construct(storage, other);
|
||||
type.destruct(storage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QGuiMetaType)
|
||||
#include "tst_qguimetatype.moc"
|
14
tests/benchmarks/gui/kernel/qguivariant/CMakeLists.txt
Normal file
14
tests/benchmarks/gui/kernel/qguivariant/CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qguivariant Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qguivariant
|
||||
SOURCES
|
||||
tst_qguivariant.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
)
|
75
tests/benchmarks/gui/kernel/qguivariant/tst_qguivariant.cpp
Normal file
75
tests/benchmarks/gui/kernel/qguivariant/tst_qguivariant.cpp
Normal file
@ -0,0 +1,75 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qtest.h>
|
||||
#include <QtCore/qvariant.h>
|
||||
|
||||
#define ITERATION_COUNT 1e5
|
||||
|
||||
class tst_QGuiVariant : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
tst_QGuiVariant();
|
||||
virtual ~tst_QGuiVariant();
|
||||
|
||||
private slots:
|
||||
void createGuiType_data();
|
||||
void createGuiType();
|
||||
void createGuiTypeCopy_data();
|
||||
void createGuiTypeCopy();
|
||||
};
|
||||
|
||||
tst_QGuiVariant::tst_QGuiVariant()
|
||||
{
|
||||
}
|
||||
|
||||
tst_QGuiVariant::~tst_QGuiVariant()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QGuiVariant::createGuiType_data()
|
||||
{
|
||||
QTest::addColumn<int>("typeId");
|
||||
for (int i = QMetaType::FirstGuiType; i <= QMetaType::LastGuiType; ++i) {
|
||||
if (QMetaType metaType(i); metaType.isValid())
|
||||
QTest::newRow(metaType.name()) << i;
|
||||
}
|
||||
}
|
||||
|
||||
// Tests how fast a Qt GUI type can be default-constructed by a
|
||||
// QVariant. The purpose of this benchmark is to measure the overhead
|
||||
// of creating (and destroying) a QVariant compared to creating the
|
||||
// type directly.
|
||||
void tst_QGuiVariant::createGuiType()
|
||||
{
|
||||
QFETCH(int, typeId);
|
||||
QBENCHMARK {
|
||||
for (int i = 0; i < ITERATION_COUNT; ++i)
|
||||
QVariant(QMetaType(typeId));
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QGuiVariant::createGuiTypeCopy_data()
|
||||
{
|
||||
createGuiType_data();
|
||||
}
|
||||
|
||||
// Tests how fast a Qt GUI type can be copy-constructed by a
|
||||
// QVariant. The purpose of this benchmark is to measure the overhead
|
||||
// of creating (and destroying) a QVariant compared to creating the
|
||||
// type directly.
|
||||
void tst_QGuiVariant::createGuiTypeCopy()
|
||||
{
|
||||
QFETCH(int, typeId);
|
||||
QVariant other((QMetaType(typeId)));
|
||||
const void *copy = other.constData();
|
||||
QBENCHMARK {
|
||||
for (int i = 0; i < ITERATION_COUNT; ++i)
|
||||
QVariant(QMetaType(typeId), copy);
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QGuiVariant)
|
||||
#include "tst_qguivariant.moc"
|
Reference in New Issue
Block a user