aboutsummaryrefslogtreecommitdiffstats
path: root/tests/benchmarks
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2009-04-30 10:01:54 +0200
committerhjk <qtc-committer@nokia.com>2009-04-30 10:01:54 +0200
commitfeb34c0e6fde4f04f04476054554a5fef75a32a4 (patch)
tree5e5e2a7d2c9328b09d5d9d3bb1f76f49b326de34 /tests/benchmarks
parentb72b4142dc201f6de07989628bcc23bd1f03a3e3 (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.cpp84
-rw-r--r--tests/benchmarks/qstringbuilder/qstringbuilder.pro12
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