QJsEngine vs QScripEngine speed



  • As far as I understood the QScriptEngine class is being replaced by the QJSEngine class. I also read QJSEngine should be more efficient. I however experience the opposite, the execution of the script function I have becomes about 10 times slower with QJSEngine compared to QScriptEngine, and a factor of 100 slower compared to using QScriptEngine together with QScriptProgram (I tested calling the function below 1000 times in a loop, got about 3000, 300 and 30 msec). My function looks like this, it calculates the gas density based on a user-specified function of pressure and temperature:

    double computeScriptFunction(const double &p, const double &T, const QString &program)const{
    static ScriptEngine e;
    static ScriptValue globObj;
    static bool isInit=false;
    if(!isInit){
    globObj = e.globalObject();
    isInit = true;
    }
    globObj.setProperty("p",p);
    globObj.setProperty("T",T);
    ScriptValue val = e.evaluate(program);
    return val.toNumber();
    }

    ScriptEngine and ScriptValue are here typedefs for QJSEngine/QScriptEngine and QJSValue/QScriptValue depending on what I want to use. The code I use when using QScriptProgram is identical except that the function input is a QScriptProgram and not a QString.

    Does anyone have any experience with the speed of QJSEngine vs QScriptEngine?
    Does there exist anything similar to QScriptProgram for QJSEngine?

    Regards, Ivar


Log in to reply
 

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