Compilation benchmark

Change-Id: Iaa875817367d3a9600dd1ad685f996377af9f82d
This commit is contained in:
Aaron Kennedy 2011-05-05 15:24:17 +10:00
parent 21521c2d28
commit 1332e9277c
3 changed files with 74 additions and 4 deletions

View File

@ -58,7 +58,7 @@
#else // !QT_CREATOR #else // !QT_CREATOR
# define QT_QML_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE # define QT_QML_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
# define QT_QML_END_NAMESPACE QT_END_NAMESPACE # define QT_QML_END_NAMESPACE QT_END_NAMESPACE
# define QML_PARSER_EXPORT # define QML_PARSER_EXPORT Q_AUTOTEST_EXPORT
#endif // QT_CREATOR #endif // QT_CREATOR
#endif // QDECLARATIVEJSGLOBAL_P_H #endif // QDECLARATIVEJSGLOBAL_P_H

View File

@ -67,7 +67,7 @@ QT_MODULE(Declarative)
class QByteArray; class QByteArray;
class QDeclarativeScriptParserJsASTData; class QDeclarativeScriptParserJsASTData;
class QDeclarativeScriptParser class Q_AUTOTEST_EXPORT QDeclarativeScriptParser
{ {
public: public:
class Import class Import

View File

@ -40,9 +40,18 @@
****************************************************************************/ ****************************************************************************/
#include <qtest.h> #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 <QFile>
#include <QDebug>
#include <QTextStream>
#ifdef Q_OS_SYMBIAN #ifdef Q_OS_SYMBIAN
// In Symbian OS test data is located in applications private dir // In Symbian OS test data is located in applications private dir
@ -58,6 +67,12 @@ public:
private slots: private slots:
void boomblock(); void boomblock();
void jsparser_data();
void jsparser();
void scriptparser_data();
void scriptparser();
private: private:
QDeclarativeEngine engine; 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) QTEST_MAIN(tst_compilation)
#include "tst_compilation.moc" #include "tst_compilation.moc"