QScriptEngine: which expression is faster ?



  • Hi Everybody,

    I'm making a scriptable application, and I'm wondering which kind of expression is faster:

    engine.evaluate("object1.property1").toString();
    engine.evaluate("object1.property2").toString();
    engine.evaluate("object1.property3").toString();
    

    or

    QScriptValue object1 = engine.property("object1");
    object1.property("property1").toString();
    object1.property("property2").toString();
    object1.property("property3").toString();
    

    Is the second method faster (I 'save' object1 and I'm hoping that property() does not invoke the interpreter). ? I'm I right ?

    Thanks


  • Moderators

    Hi. Why don't you just measure and see what's faster?



  • Possible answer: it's the same.
    Either property() invokes the interpreter or object1 is "changed" everytime the underlying script changes it.

    Because if I do:

    // let's assume object1 is an array
    QScriptValue object1= engine.property("object1");
    

    Then I use Javascript to alter the contents of object1 (for example using evaluate())

    and I do:

    qDebug() << object1.toVariant();
    

    The object1 will contains the latest changes, even if it has been changes outside C++.

    This makes me believe that QScriptValue objects are tied to the underlying JS objects. Any change in the JS will immediately be seen in C++.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.