Extend QVariant benchmarks
Add new cases for custom types and QStringList. Change-Id: I79f8d415be43774e6b2488e8a6a8028bf4a5fd45 Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
This commit is contained in:
parent
1d01bc1e83
commit
28c3d56d4f
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user