diff options
Diffstat (limited to 'Source/JavaScriptCore/qt/benchmarks')
6 files changed, 629 insertions, 0 deletions
| diff --git a/Source/JavaScriptCore/qt/benchmarks/benchmarks.pri b/Source/JavaScriptCore/qt/benchmarks/benchmarks.pri new file mode 100644 index 0000000..5af3383 --- /dev/null +++ b/Source/JavaScriptCore/qt/benchmarks/benchmarks.pri @@ -0,0 +1,19 @@ +QMAKE_RPATHDIR = $$OUTPUT_DIR/lib $$QMAKE_RPATHDIR +QMAKE_LIBDIR = $$OUTPUT_DIR/lib $$QMAKE_LIBDIR +mac:!static:contains(QT_CONFIG, qt_framework):!CONFIG(webkit_no_framework) { +    LIBS += -framework QtScript +    QMAKE_FRAMEWORKPATH = $$OUTPUT_DIR/lib $$QMAKE_FRAMEWORKPATH +} else { +    win32-*|wince* { +        LIBS += -lQtScript$${QT_MAJOR_VERSION} +    } else { +        LIBS += -lQtScript +    } +} + +CONFIG(release, debug|release) { +    DEFINES += NDEBUG +} + +INCLUDEPATH += $$PWD/../api + diff --git a/Source/JavaScriptCore/qt/benchmarks/benchmarks.pro b/Source/JavaScriptCore/qt/benchmarks/benchmarks.pro new file mode 100644 index 0000000..85fa82c --- /dev/null +++ b/Source/JavaScriptCore/qt/benchmarks/benchmarks.pro @@ -0,0 +1,4 @@ +TEMPLATE = subdirs +SUBDIRS =   qscriptengine \ +            qscriptvalue \ + diff --git a/Source/JavaScriptCore/qt/benchmarks/qscriptengine/qscriptengine.pro b/Source/JavaScriptCore/qt/benchmarks/qscriptengine/qscriptengine.pro new file mode 100644 index 0000000..e94137d --- /dev/null +++ b/Source/JavaScriptCore/qt/benchmarks/qscriptengine/qscriptengine.pro @@ -0,0 +1,13 @@ +TEMPLATE = app +TARGET = tst_bench_qscriptengine + +SOURCES += tst_qscriptengine.cpp + +QT += testlib + +include(../benchmarks.pri) + +symbian* { +    TARGET.EPOCHEAPSIZE  = 0x20000 0x2000000 // Min 128kB, Max 32MB +    TARGET.EPOCSTACKSIZE = 0x14000 +} diff --git a/Source/JavaScriptCore/qt/benchmarks/qscriptengine/tst_qscriptengine.cpp b/Source/JavaScriptCore/qt/benchmarks/qscriptengine/tst_qscriptengine.cpp new file mode 100644 index 0000000..0c447c6 --- /dev/null +++ b/Source/JavaScriptCore/qt/benchmarks/qscriptengine/tst_qscriptengine.cpp @@ -0,0 +1,142 @@ +/* +    Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) + +    This library is free software; you can redistribute it and/or +    modify it under the terms of the GNU Library General Public +    License as published by the Free Software Foundation; either +    version 2 of the License, or (at your option) any later version. + +    This library is distributed in the hope that it will be useful, +    but WITHOUT ANY WARRANTY; without even the implied warranty of +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +    Library General Public License for more details. + +    You should have received a copy of the GNU Library General Public License +    along with this library; see the file COPYING.LIB.  If not, write to +    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +    Boston, MA 02110-1301, USA. +*/ + +#include "qscriptengine.h" +#include "qscriptvalue.h" +#include <qtest.h> + +class tst_QScriptEngine : public QObject { +    Q_OBJECT + +private slots: +    void checkSyntax_data(); +    void checkSyntax(); +    void constructor(); +    void evaluateString_data(); +    void evaluateString(); +    void evaluateProgram_data(); +    void evaluateProgram(); +    void newObject(); +    void nullValue(); +    void undefinedValue(); +    void globalObject(); +    void toStringHandle(); +}; + +void tst_QScriptEngine::checkSyntax_data() +{ +    evaluateString_data(); +} + +void tst_QScriptEngine::checkSyntax() +{ +    QFETCH(QString, code); +    QScriptEngine engine; +    QBENCHMARK { +        engine.checkSyntax(code); +    } +} + +void tst_QScriptEngine::constructor() +{ +    QBENCHMARK { +        QScriptEngine engine; +    } +} + +void tst_QScriptEngine::evaluateString_data() +{ +    QTest::addColumn<QString>("code"); +    QTest::newRow("empty script") << QString::fromLatin1(""); +    QTest::newRow("number literal") << QString::fromLatin1("123"); +    QTest::newRow("string literal") << QString::fromLatin1("'ciao'"); +    QTest::newRow("regexp literal") << QString::fromLatin1("/foo/gim"); +    QTest::newRow("null literal") << QString::fromLatin1("null"); +    QTest::newRow("undefined literal") << QString::fromLatin1("undefined"); +    QTest::newRow("empty object literal") << QString::fromLatin1("{}"); +    QTest::newRow("this") << QString::fromLatin1("this"); +} + +void tst_QScriptEngine::evaluateString() +{ +    QFETCH(QString, code); +    QScriptEngine engine; +    QBENCHMARK { +        engine.evaluate(code); +    } +} + +void tst_QScriptEngine::evaluateProgram_data() +{ +    evaluateString_data(); +} + +void tst_QScriptEngine::evaluateProgram() +{ +    QFETCH(QString, code); +    QScriptEngine engine; +    QScriptProgram program(code); +    QBENCHMARK { +        engine.evaluate(program); +    } +} + +void tst_QScriptEngine::newObject() +{ +    QScriptEngine engine; +    QBENCHMARK { +        engine.newObject(); +    } +} + +void tst_QScriptEngine::nullValue() +{ +    QScriptEngine engine; +    QBENCHMARK { +        engine.nullValue(); +    } +} + +void tst_QScriptEngine::undefinedValue() +{ +    QScriptEngine engine; +    QBENCHMARK { +        engine.undefinedValue(); +    } +} + +void tst_QScriptEngine::globalObject() +{ +    QScriptEngine engine; +    QBENCHMARK { +        engine.globalObject(); +    } +} + +void tst_QScriptEngine::toStringHandle() +{ +    QScriptEngine engine; +    QString str = QString::fromLatin1("foobarbaz"); +    QBENCHMARK { +        engine.toStringHandle(str); +    } +} + +QTEST_MAIN(tst_QScriptEngine) +#include "tst_qscriptengine.moc" diff --git a/Source/JavaScriptCore/qt/benchmarks/qscriptvalue/qscriptvalue.pro b/Source/JavaScriptCore/qt/benchmarks/qscriptvalue/qscriptvalue.pro new file mode 100644 index 0000000..673fe65 --- /dev/null +++ b/Source/JavaScriptCore/qt/benchmarks/qscriptvalue/qscriptvalue.pro @@ -0,0 +1,9 @@ +TEMPLATE = app +TARGET = tst_bench_qscriptvalue +QT += testlib + +isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../../.. +include(../benchmarks.pri) + +SOURCES += tst_qscriptvalue.cpp + diff --git a/Source/JavaScriptCore/qt/benchmarks/qscriptvalue/tst_qscriptvalue.cpp b/Source/JavaScriptCore/qt/benchmarks/qscriptvalue/tst_qscriptvalue.cpp new file mode 100644 index 0000000..7c39b8e --- /dev/null +++ b/Source/JavaScriptCore/qt/benchmarks/qscriptvalue/tst_qscriptvalue.cpp @@ -0,0 +1,442 @@ +/* +    Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) + +    This library is free software; you can redistribute it and/or +    modify it under the terms of the GNU Library General Public +    License as published by the Free Software Foundation; either +    version 2 of the License, or (at your option) any later version. + +    This library is distributed in the hope that it will be useful, +    but WITHOUT ANY WARRANTY; without even the implied warranty of +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +    Library General Public License for more details. + +    You should have received a copy of the GNU Library General Public License +    along with this library; see the file COPYING.LIB.  If not, write to +    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +    Boston, MA 02110-1301, USA. +*/ + +#include "qscriptengine.h" +#include "qscriptstring.h" +#include "qscriptvalue.h" +#include <qtest.h> + +Q_DECLARE_METATYPE(QScriptValue); + +class tst_QScriptValue : public QObject { +    Q_OBJECT + +public: +    tst_QScriptValue() +        : m_engine(0) +    {} + +    ~tst_QScriptValue() +    { +        if (m_engine) +            delete m_engine; +    } + +private slots: +    void values_data(); + +    void ctorBool(); +    void ctorReal(); +    void ctorNumber(); +    void ctorQString(); +    void ctorCString(); +    void ctorSpecial(); +    void ctorQScriptValue(); + +    void isValid_data(); +    void isValid(); +    void isBool_data(); +    void isBool(); +    void isNumber_data(); +    void isNumber(); +    void isFunction_data(); +    void isFunction(); +    void isNull_data(); +    void isNull(); +    void isString_data(); +    void isString(); +    void isUndefined_data(); +    void isUndefined(); +    void isObject_data(); +    void isObject(); +    void isError_data(); +    void isError(); + +    void toString_data(); +    void toString(); +    void toNumber_data(); +    void toNumber(); +    void toBool_data(); +    void toBool(); +    void toInteger_data(); +    void toInteger(); +    void toInt32_data(); +    void toInt32(); +    void toUInt32_data(); +    void toUInt32(); +    void toUInt16_data(); +    void toUInt16(); +    void toObject_data(); +    void toObject(); + +    void equals_data(); +    void equals(); +    void strictlyEquals_data(); +    void strictlyEquals(); +    void instanceOf_data(); +    void instanceOf(); + +private: +    QScriptEngine* m_engine; +}; + +void tst_QScriptValue::values_data() +{ +    if (m_engine) +        delete m_engine; +    m_engine = new QScriptEngine; + +    QTest::addColumn<QScriptValue>("value"); + +    QTest::newRow("invalid") << QScriptValue(); + +    QTest::newRow("cbool") << QScriptValue(true); +    QTest::newRow("cnumber") << QScriptValue(1234); +    QTest::newRow("cstring") << QScriptValue("abc"); +    QTest::newRow("cnull") << QScriptValue(QScriptValue::NullValue); +    QTest::newRow("cundefined") << QScriptValue(QScriptValue::UndefinedValue); + +    QTest::newRow("jsbool") << m_engine->evaluate("true"); +    QTest::newRow("jsnumber") << m_engine->evaluate("12345"); +    QTest::newRow("jsstring") << m_engine->evaluate("'go'"); +    QTest::newRow("jsfunction") << m_engine->evaluate("(function {})"); +    QTest::newRow("jsnull") << m_engine->nullValue(); +    QTest::newRow("jsundefined") << m_engine->undefinedValue(); +    QTest::newRow("jsobject") << m_engine->newObject(); +    QTest::newRow("jserror") << m_engine->evaluate("new Error()"); +} + +void tst_QScriptValue::ctorBool() +{ +    QBENCHMARK { +        QScriptValue(true); +    } +} + +void tst_QScriptValue::ctorReal() +{ +    QBENCHMARK { +        QScriptValue(12.3); +    } +} + +void tst_QScriptValue::ctorNumber() +{ +    QBENCHMARK { +        QScriptValue(123); +    } +} + +void tst_QScriptValue::ctorQString() +{ +    QString str = QString::fromLatin1("ciao"); +    QBENCHMARK { +        QScriptValue(str); +    } +} + +void tst_QScriptValue::ctorCString() +{ +    QBENCHMARK { +        QScriptValue("Pong!"); +    } +} + +void tst_QScriptValue::ctorSpecial() +{ +    QBENCHMARK { +        (void)QScriptValue(QScriptValue::NullValue); +    } +} + +void tst_QScriptValue::ctorQScriptValue() +{ +    QScriptValue tmp(1234); +    QBENCHMARK { +        QScriptValue(tmp); +    } +} + +void tst_QScriptValue::isValid_data() +{ +    values_data(); +} + +void tst_QScriptValue::isValid() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.isValid(); +    } +} + +void tst_QScriptValue::isBool_data() +{ +    values_data(); +} + +void tst_QScriptValue::isBool() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.isBool(); +    } +} + +void tst_QScriptValue::isNumber_data() +{ +    values_data(); +} + +void tst_QScriptValue::isNumber() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.isNumber(); +    } +} + +void tst_QScriptValue::isFunction_data() +{ +    values_data(); +} + +void tst_QScriptValue::isFunction() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.isFunction(); +    } +} + +void tst_QScriptValue::isNull_data() +{ +    values_data(); +} + +void tst_QScriptValue::isNull() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.isNull(); +    } +} + +void tst_QScriptValue::isString_data() +{ +    values_data(); +} + +void tst_QScriptValue::isString() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.isString(); +    } +} + +void tst_QScriptValue::isUndefined_data() +{ +    values_data(); +} + +void tst_QScriptValue::isUndefined() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.isUndefined(); +    } +} + +void tst_QScriptValue::isObject_data() +{ +    values_data(); +} + +void tst_QScriptValue::isObject() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.isObject(); +    } +} + +void tst_QScriptValue::isError_data() +{ +    values_data(); +} + +void tst_QScriptValue::isError() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.isError(); +    } +} + +void tst_QScriptValue::toString_data() +{ +    values_data(); +} + +void tst_QScriptValue::toString() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.toString(); +    } +} + +void tst_QScriptValue::toNumber_data() +{ +    values_data(); +} + +void tst_QScriptValue::toNumber() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.toNumber(); +    } +} + +void tst_QScriptValue::toBool_data() +{ +    values_data(); +} + +void tst_QScriptValue::toBool() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.toBool(); +    } +} + +void tst_QScriptValue::toInteger_data() +{ +    values_data(); +} + +void tst_QScriptValue::toInteger() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.toInteger(); +    } +} + +void tst_QScriptValue::toInt32_data() +{ +    values_data(); +} + +void tst_QScriptValue::toInt32() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.toInt32(); +    } +} + +void tst_QScriptValue::toUInt32_data() +{ +    values_data(); +} + +void tst_QScriptValue::toUInt32() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.toUInt32(); +    } +} + +void tst_QScriptValue::toUInt16_data() +{ +    values_data(); +} + +void tst_QScriptValue::toUInt16() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.toUInt16(); +    } +} + +void tst_QScriptValue::toObject_data() +{ +    values_data(); +} + +void tst_QScriptValue::toObject() +{ +    QFETCH(QScriptValue, value); +    QBENCHMARK { +        value.toObject(); +    } +} + +void tst_QScriptValue::equals_data() +{ +    values_data(); +} + +void tst_QScriptValue::equals() +{ +    QFETCH(QScriptValue, value); +    static QScriptValue previous; +    QBENCHMARK { +        value.equals(previous); +    } +    previous = value; +} + +void tst_QScriptValue::strictlyEquals_data() +{ +    values_data(); +} + +void tst_QScriptValue::strictlyEquals() +{ +    QFETCH(QScriptValue, value); +    static QScriptValue previous; +    QBENCHMARK { +        value.strictlyEquals(previous); +    } +    previous = value; +} + +void tst_QScriptValue::instanceOf_data() +{ +    values_data(); +} + +void tst_QScriptValue::instanceOf() +{ +    QFETCH(QScriptValue, value); +    static QScriptValue object = m_engine->newObject(); +    QBENCHMARK { +        value.instanceOf(object); +    } +} + +QTEST_MAIN(tst_QScriptValue) +#include "tst_qscriptvalue.moc" | 
