diff options
author | hjk <qtc-committer@nokia.com> | 2009-05-26 11:02:53 +0200 |
---|---|---|
committer | hjk <qtc-committer@nokia.com> | 2009-05-26 11:03:39 +0200 |
commit | 4774ba14f784767a78c05fa171586aa438642864 (patch) | |
tree | 3c91061d67a6e66aee5cde621fe34779b1be7100 | |
parent | dc0bc586462e2a74fba38f054d303d2226eec4e5 (diff) |
qstringbuilder: add a new benchmark using QString::arg
-rw-r--r-- | src/libs/utils/qstringbuilder.h | 18 | ||||
-rw-r--r-- | tests/benchmarks/qstringbuilder/main.cpp | 21 |
2 files changed, 35 insertions, 4 deletions
diff --git a/src/libs/utils/qstringbuilder.h b/src/libs/utils/qstringbuilder.h index 487f20fc2b..88d82b3260 100644 --- a/src/libs/utils/qstringbuilder.h +++ b/src/libs/utils/qstringbuilder.h @@ -46,6 +46,13 @@ #include <string.h> +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Core) + + // Using this relies on changing the QString::QString(QChar *, int) // constructor to allocated an unitialized string of the given size. //#define USE_CHANGED_QSTRING 1 @@ -89,7 +96,7 @@ template <typename A> class QStringBuilder : public A { public: - QStringBuilder(A a_) : A(a_) {} + QStringBuilder(const A &a_) : A(a_) {} operator QString() const { @@ -164,7 +171,7 @@ template <typename A, typename B> class QStringBuilderPair { public: - QStringBuilderPair(A a_, B b_) : a(a_), b(b_) {} + QStringBuilderPair(const A &a_, const B &b_) : a(a_), b(b_) {} inline int size() const { @@ -178,8 +185,8 @@ public: } private: - A a; - B b; + const A a; + const B b; }; @@ -216,5 +223,8 @@ operator%(const QString &a, const QString &b) QStringBuilder<QString> > (a, b); } +QT_END_NAMESPACE + +QT_END_HEADER #endif // QSTRINGBUILDER_H diff --git a/tests/benchmarks/qstringbuilder/main.cpp b/tests/benchmarks/qstringbuilder/main.cpp index 167d55a596..d5aea2d96c 100644 --- a/tests/benchmarks/qstringbuilder/main.cpp +++ b/tests/benchmarks/qstringbuilder/main.cpp @@ -21,6 +21,7 @@ public: tst_qstringbuilder() : l1literal("some string literal"), l1string("some string literal"), + ba("some string literal"), string(l1string), stringref(&string, 2, 10), achar('c') @@ -197,9 +198,29 @@ private slots: COMPARE(r, QString(achar % string % achar)); } + void separator_8() { SEP("string.arg"); } + + void b_string_arg() { + const QString pattern = l1string + "%1" + l1string; + QBENCHMARK { r = l1literal % string % l1literal; } + COMPARE(r, l1string + string + l1string); + } + + void s_string_arg() { + const QString pattern = l1string + "%1" + l1string; + QBENCHMARK { r = pattern.arg(string); } + COMPARE(r, l1string + string + l1string); + } + + void s_bytearray_arg() { + QByteArray result; + QBENCHMARK { result = ba + ba + ba; } + } + private: const QLatin1Literal l1literal; const QLatin1String l1string; + const QByteArray ba; const QString string; const QStringRef stringref; const QLatin1Char achar; |