diff options
author | Jędrzej Nowacki <jedrzej.nowacki@nokia.com> | 2011-10-12 15:05:44 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-24 11:04:04 +0200 |
commit | 28c3d56d4fe8ccd0af9db5b9c39e297f3aed13be (patch) | |
tree | 70785c4e8e046457211aea206d4636d939ca7791 /tests/benchmarks/corelib | |
parent | 1d01bc1e83560cb2fc4f9f7f00762ffa5134448a (diff) |
Extend QVariant benchmarks
Add new cases for custom types and QStringList.
Change-Id: I79f8d415be43774e6b2488e8a6a8028bf4a5fd45
Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
Diffstat (limited to 'tests/benchmarks/corelib')
-rw-r--r-- | tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp index f1c49c3af5..85d14b99b6 100644 --- a/tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp @@ -56,16 +56,23 @@ private slots: void rectVariantCreation(); void stringVariantCreation(); void pixmapVariantCreation(); + void stringListVariantCreation(); + void bigClassVariantCreation(); + void smallClassVariantCreation(); void doubleVariantSetValue(); void floatVariantSetValue(); void rectVariantSetValue(); void stringVariantSetValue(); + void stringListVariantSetValue(); + void bigClassVariantSetValue(); + void smallClassVariantSetValue(); void doubleVariantAssignment(); void floatVariantAssignment(); void rectVariantAssignment(); void stringVariantAssignment(); + void stringListVariantAssignment(); void doubleVariantValue(); void floatVariantValue(); @@ -78,6 +85,20 @@ private slots: void createCoreTypeCopy(); }; +struct BigClass +{ + double n,i,e,r,o,b; +}; +Q_STATIC_ASSERT(sizeof(BigClass) > sizeof(QVariant::Private::Data)); +Q_DECLARE_METATYPE(BigClass); + +struct SmallClass +{ + char s; +}; +Q_STATIC_ASSERT(sizeof(SmallClass) <= sizeof(QVariant::Private::Data)); +Q_DECLARE_METATYPE(SmallClass); + void tst_qvariant::testBound() { qreal d = qreal(.5); @@ -98,6 +119,27 @@ static void variantCreation(T val) } } +template <> +void variantCreation<BigClass>(BigClass val) +{ + QBENCHMARK { + for (int i = 0; i < ITERATION_COUNT; ++i) { + QVariant::fromValue(val); + } + } +} + +template <> +void variantCreation<SmallClass>(SmallClass val) +{ + QBENCHMARK { + for (int i = 0; i < ITERATION_COUNT; ++i) { + QVariant::fromValue(val); + } + } +} + + void tst_qvariant::doubleVariantCreation() { variantCreation<double>(0.0); @@ -123,6 +165,21 @@ void tst_qvariant::pixmapVariantCreation() variantCreation<QPixmap>(QPixmap()); } +void tst_qvariant::stringListVariantCreation() +{ + variantCreation<QStringList>(QStringList()); +} + +void tst_qvariant::bigClassVariantCreation() +{ + variantCreation<BigClass>(BigClass()); +} + +void tst_qvariant::smallClassVariantCreation() +{ + variantCreation<SmallClass>(SmallClass()); +} + template <typename T> static void variantSetValue(T d) { @@ -154,6 +211,21 @@ void tst_qvariant::stringVariantSetValue() variantSetValue<QString>(QString()); } +void tst_qvariant::stringListVariantSetValue() +{ + variantSetValue<QStringList>(QStringList()); +} + +void tst_qvariant::bigClassVariantSetValue() +{ + variantSetValue<BigClass>(BigClass()); +} + +void tst_qvariant::smallClassVariantSetValue() +{ + variantSetValue<SmallClass>(SmallClass()); +} + template <typename T> static void variantAssignment(T d) { @@ -185,6 +257,11 @@ void tst_qvariant::stringVariantAssignment() variantAssignment<QString>(QString()); } +void tst_qvariant::stringListVariantAssignment() +{ + variantAssignment<QStringList>(QStringList()); +} + void tst_qvariant::doubleVariantValue() { QVariant v(0.0); |