forked from qt-creator/qt-creator
work on stringbuilder benchmark
This commit is contained in:
@@ -46,7 +46,7 @@
|
|||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
// Using this relies on chaning the QString::QString(QChar *, int)
|
// Using this relies on changing the QString::QString(QChar *, int)
|
||||||
// constructor to allocated an unitialized string of the given size.
|
// constructor to allocated an unitialized string of the given size.
|
||||||
//#define USE_CHANGED_QSTRING 1
|
//#define USE_CHANGED_QSTRING 1
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ private:
|
|||||||
const char *m_data;
|
const char *m_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class A>
|
template <typename A>
|
||||||
class QStringBuilder : public A
|
class QStringBuilder : public A
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -173,14 +173,14 @@ operator%(const A &a, const B &b)
|
|||||||
|
|
||||||
// QString related specializations
|
// QString related specializations
|
||||||
|
|
||||||
template <class A>
|
template <typename A>
|
||||||
inline QStringBuilder< QStringBuilderPair<A, QStringBuilder<QString> > >
|
inline QStringBuilder< QStringBuilderPair<A, QStringBuilder<QString> > >
|
||||||
operator%(const A &a, const QString &b)
|
operator%(const A &a, const QString &b)
|
||||||
{
|
{
|
||||||
return QStringBuilderPair<A, QStringBuilder<QString> > (a, b);
|
return QStringBuilderPair<A, QStringBuilder<QString> > (a, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class B>
|
template <typename B>
|
||||||
inline QStringBuilder< QStringBuilderPair<QStringBuilder<QString>, B> >
|
inline QStringBuilder< QStringBuilderPair<QStringBuilder<QString>, B> >
|
||||||
operator%(const QString &a, const B &b)
|
operator%(const QString &a, const B &b)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
#define COMPARE(a, b) QCOMPARE(a, b)
|
#define COMPARE(a, b) QCOMPARE(a, b)
|
||||||
//#define COMPARE(a, b)
|
//#define COMPARE(a, b)
|
||||||
|
|
||||||
|
#define SEP(s) qDebug() << "\n------- " s " ----------";
|
||||||
|
|
||||||
class tst_qstringbuilder : public QObject
|
class tst_qstringbuilder : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -18,22 +20,28 @@ public:
|
|||||||
tst_qstringbuilder();
|
tst_qstringbuilder();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
// QStringBuilder based
|
void separator_2() { SEP("string + string (builder first)"); }
|
||||||
void b_separator() { qDebug() << "\n------- QStringBuilder based ----------"; }
|
|
||||||
void b_2_l1literal();
|
void b_2_l1literal();
|
||||||
void b_3_l1literal();
|
|
||||||
void b_4_l1literal();
|
|
||||||
void b_5_l1literal();
|
|
||||||
void b_string_4_char();
|
|
||||||
void b_char_string_char();
|
|
||||||
|
|
||||||
// QString based for comparison
|
|
||||||
void s_separator() { qDebug() << "\n-------- QString based ---------"; }
|
|
||||||
void s_2_l1string();
|
void s_2_l1string();
|
||||||
|
|
||||||
|
void separator_3() { SEP("3 strings"); }
|
||||||
|
void b_3_l1literal();
|
||||||
void s_3_l1string();
|
void s_3_l1string();
|
||||||
|
|
||||||
|
void separator_4() { SEP("4 strings"); }
|
||||||
|
void b_4_l1literal();
|
||||||
void s_4_l1string();
|
void s_4_l1string();
|
||||||
|
|
||||||
|
void separator_5() { SEP("5 strings"); }
|
||||||
|
void b_5_l1literal();
|
||||||
void s_5_l1string();
|
void s_5_l1string();
|
||||||
|
|
||||||
|
void separator_6() { SEP("4 chars"); }
|
||||||
|
void b_string_4_char();
|
||||||
void s_string_4_char();
|
void s_string_4_char();
|
||||||
|
|
||||||
|
void separator_7() { SEP("char + string + char"); }
|
||||||
|
void b_char_string_char();
|
||||||
void s_char_string_char();
|
void s_char_string_char();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user