diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2011-05-05 15:24:17 +1000 |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2011-05-05 15:26:17 +1000 |
commit | 1332e9277cf68b0232abf666cd0c27c39b766ef1 (patch) | |
tree | 078cdb86d3d03b3231f4c234313d5c8914d005e5 | |
parent | 21521c2d28e7c00e859fd2a28263b716d550c0fc (diff) |
Compilation benchmark
Change-Id: Iaa875817367d3a9600dd1ad685f996377af9f82d
-rw-r--r-- | src/declarative/qml/parser/qdeclarativejsglobal_p.h | 2 | ||||
-rw-r--r-- | src/declarative/qml/qdeclarativescriptparser_p.h | 2 | ||||
-rw-r--r-- | tests/benchmarks/declarative/compilation/tst_compilation.cpp | 74 |
3 files changed, 74 insertions, 4 deletions
diff --git a/src/declarative/qml/parser/qdeclarativejsglobal_p.h b/src/declarative/qml/parser/qdeclarativejsglobal_p.h index 776937cfdf..4fd8b84dcc 100644 --- a/src/declarative/qml/parser/qdeclarativejsglobal_p.h +++ b/src/declarative/qml/parser/qdeclarativejsglobal_p.h @@ -58,7 +58,7 @@ #else // !QT_CREATOR # define QT_QML_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE # define QT_QML_END_NAMESPACE QT_END_NAMESPACE -# define QML_PARSER_EXPORT +# define QML_PARSER_EXPORT Q_AUTOTEST_EXPORT #endif // QT_CREATOR #endif // QDECLARATIVEJSGLOBAL_P_H diff --git a/src/declarative/qml/qdeclarativescriptparser_p.h b/src/declarative/qml/qdeclarativescriptparser_p.h index fd89f757cc..f8cea76b11 100644 --- a/src/declarative/qml/qdeclarativescriptparser_p.h +++ b/src/declarative/qml/qdeclarativescriptparser_p.h @@ -67,7 +67,7 @@ QT_MODULE(Declarative) class QByteArray; class QDeclarativeScriptParserJsASTData; -class QDeclarativeScriptParser +class Q_AUTOTEST_EXPORT QDeclarativeScriptParser { public: class Import diff --git a/tests/benchmarks/declarative/compilation/tst_compilation.cpp b/tests/benchmarks/declarative/compilation/tst_compilation.cpp index 7bf6c9d25f..e09b34076f 100644 --- a/tests/benchmarks/declarative/compilation/tst_compilation.cpp +++ b/tests/benchmarks/declarative/compilation/tst_compilation.cpp @@ -40,9 +40,18 @@ ****************************************************************************/ #include <qtest.h> -#include <QDeclarativeEngine> -#include <QDeclarativeComponent> + +#include <QtDeclarative/qdeclarativeengine.h> +#include <QtDeclarative/qdeclarativecomponent.h> +#include <QtDeclarative/private/qdeclarativejsengine_p.h> +#include <QtDeclarative/private/qdeclarativejsnodepool_p.h> +#include <QtDeclarative/private/qdeclarativejsparser_p.h> +#include <QtDeclarative/private/qdeclarativejslexer_p.h> +#include <QtDeclarative/private/qdeclarativescriptparser_p.h> + #include <QFile> +#include <QDebug> +#include <QTextStream> #ifdef Q_OS_SYMBIAN // In Symbian OS test data is located in applications private dir @@ -58,6 +67,12 @@ public: private slots: void boomblock(); + void jsparser_data(); + void jsparser(); + + void scriptparser_data(); + void scriptparser(); + private: QDeclarativeEngine engine; }; @@ -90,6 +105,61 @@ void tst_compilation::boomblock() } } +void tst_compilation::jsparser_data() +{ + QTest::addColumn<QString>("file"); + + QTest::newRow("boomblock") << QString(SRCDIR + QLatin1String("/data/BoomBlock.qml")); +} + +void tst_compilation::jsparser() +{ + QFETCH(QString, file); + + QFile f(file); + QVERIFY(f.open(QIODevice::ReadOnly)); + QByteArray data = f.readAll(); + + QTextStream stream(data, QIODevice::ReadOnly); + const QString code = stream.readAll(); + + QBENCHMARK { + QDeclarativeJS::Engine engine; + QDeclarativeJS::NodePool nodePool(file, &engine); + + QDeclarativeJS::Lexer lexer(&engine); + lexer.setCode(code, -1); + + QDeclarativeJS::Parser parser(&engine); + parser.parse(); + parser.ast(); + } +} + +void tst_compilation::scriptparser_data() +{ + QTest::addColumn<QString>("file"); + + QTest::newRow("boomblock") << QString(SRCDIR + QLatin1String("/data/BoomBlock.qml")); +} + +void tst_compilation::scriptparser() +{ + QFETCH(QString, file); + + QFile f(file); + QVERIFY(f.open(QIODevice::ReadOnly)); + QByteArray data = f.readAll(); + + QUrl url = QUrl::fromLocalFile(file); + + QBENCHMARK { + QDeclarativeScriptParser parser; + parser.parse(data, url); + parser.tree(); + } +} + QTEST_MAIN(tst_compilation) #include "tst_compilation.moc" |