diff options
author | hjk <qtc-committer@nokia.com> | 2009-04-30 10:01:54 +0200 |
---|---|---|
committer | hjk <qtc-committer@nokia.com> | 2009-04-30 10:01:54 +0200 |
commit | feb34c0e6fde4f04f04476054554a5fef75a32a4 (patch) | |
tree | 5e5e2a7d2c9328b09d5d9d3bb1f76f49b326de34 /tests/benchmarks | |
parent | b72b4142dc201f6de07989628bcc23bd1f03a3e3 (diff) |
Introduce a new QStringBuilder helper class to speed up building strings
from smaller chunks using expression templates.
Simple test and benchmark included, the class is not yet complete.
Diffstat (limited to 'tests/benchmarks')
-rw-r--r-- | tests/benchmarks/qstringbuilder/main.cpp | 84 | ||||
-rw-r--r-- | tests/benchmarks/qstringbuilder/qstringbuilder.pro | 12 |
2 files changed, 96 insertions, 0 deletions
diff --git a/tests/benchmarks/qstringbuilder/main.cpp b/tests/benchmarks/qstringbuilder/main.cpp new file mode 100644 index 0000000000..9b2bc99a7c --- /dev/null +++ b/tests/benchmarks/qstringbuilder/main.cpp @@ -0,0 +1,84 @@ + +#include <QDebug> +#include <QString> + +#include "../../../src/libs/utils/qstringbuilder.h" + +#include <qtest.h> + + +class tst_qstringbuilder : public QObject +{ + Q_OBJECT + +public: + tst_qstringbuilder(); + +private slots: + // QStringBuilder based + void builderbased_l1literal_l1literal(); + void builderbased_l1literal_l1literal_l1literal(); + void builderbased_l1literal_l1literal_l1literal_l1literal(); + + // QString based for comparison + void stringbased_l1string_l1string(); + void stringbased_l1string_l1string_l1string(); + void stringbased_l1string_l1string_l1string_l1string(); + +private: + const QLatin1Literal l1literal; + const QLatin1String l1string; +}; + + +tst_qstringbuilder::tst_qstringbuilder() + : l1literal("some literal"), l1string("some literal") +{} + +void tst_qstringbuilder::builderbased_l1literal_l1literal() +{ + QString result; + QBENCHMARK { result = l1literal % l1literal; } + QCOMPARE(result, l1string + l1string); +} + +void tst_qstringbuilder::builderbased_l1literal_l1literal_l1literal() +{ + QString result; + QBENCHMARK { result = l1literal % l1literal % l1literal; } + QCOMPARE(result, l1string + l1string + l1string); +} + +void tst_qstringbuilder::builderbased_l1literal_l1literal_l1literal_l1literal() +{ + QString result; + QBENCHMARK { result = l1literal % l1literal % l1literal % l1literal; } + QCOMPARE(result, l1string + l1string + l1string + l1string); +} + + + +void tst_qstringbuilder::stringbased_l1string_l1string() +{ + QString result; + QBENCHMARK { result = l1string + l1string; } + QCOMPARE(result, QString(l1literal % l1literal)); +} + +void tst_qstringbuilder::stringbased_l1string_l1string_l1string() +{ + QString result; + QBENCHMARK { result = l1string + l1string + l1string; } + QCOMPARE(result, QString(l1literal % l1literal % l1literal)); +} + +void tst_qstringbuilder::stringbased_l1string_l1string_l1string_l1string() +{ + QString result; + QBENCHMARK { result = l1string + l1string + l1string + l1string; } + QCOMPARE(result, QString(l1literal % l1literal % l1literal % l1literal)); +} + +QTEST_MAIN(tst_qstringbuilder) + +#include "main.moc" diff --git a/tests/benchmarks/qstringbuilder/qstringbuilder.pro b/tests/benchmarks/qstringbuilder/qstringbuilder.pro new file mode 100644 index 0000000000..81c42bc565 --- /dev/null +++ b/tests/benchmarks/qstringbuilder/qstringbuilder.pro @@ -0,0 +1,12 @@ +load(qttest_p4) +TEMPLATE = app +TARGET = tst_qstringbuilder +DEPENDPATH += . +INCLUDEPATH += . + +QT -= gui + +CONFIG += release + +# Input +SOURCES += main.cpp |