在node.js中创建具有低延迟的V8实例

时间:2015-10-17 16:54:06

标签: javascript node.js v8

我有一个node.js webserver,它应该执行一个javascript-String,它在运行时以低延迟传递。我基本上是在寻找以下java代码的node.js版本:

PFUser.currentUser()?.setValue("newLocation", forKey: valueForKey("personalObjKey")?.objectForKey("location") as! String)

输出:

import com.eclipsesource.v8.V8;

public class MainC {

private static V8 v8;   

private static int result;

public static void main(String[] args) {

    long time0 = System.nanoTime();
    createRuntime();       
    long time1 = System.nanoTime();   

    String script = "x(0,10000); "
        + "function x(y,z) { "
        + "     if (z>0) {"
        + "         return x(y+1,z-1); "
        + "     } else {"
        + "         return y;"
        + "     } "
        + "}"
        + ""; 

    simulateHTTPRequestAndExucuteScript(script);
    long time2 = System.nanoTime();          

    System.out.println("Result: " + result);        
    System.out.println("Time for 'createRuntime()' : " + ((time1-time0)/1000000.0) + " ms");
    System.out.println("Time for 'executeIntScript()' : " + ((time2-time1)/1000000.0) + " ms");
}

private static void createRuntime() {
    v8 = V8.createV8Runtime();   
}

private static void simulateHTTPRequestAndExucuteScript(String s) {
    result = v8.executeIntScript(s); 
}

}

运行时创建和脚本执行是两个独立的任务。注意,10000个递归调用的实际执行时间是< 1毫秒。初始化运行时的相当长的时间并不重要,因为这可以在传递字符串之前完成。

如何使用nodes.js完成V8运行时创建和低延迟javascript代码注入?

2 个答案:

答案 0 :(得分:0)

eh .... node.js是一个v8运行时包装器。 您不需要使用node.js创建,注入等 阅读关于页面的基本nodejs:https://nodejs.org/en/about/ 基本上你编写javascript,通过node.js运行它(这也是v8,其中包含js代码的额外c ++库)就是这样。

在你的情况下,你通过nodejs运行的主js文件将执行你拥有的js代码(该函数(x)....)并调用它你想要多少次。

运行js文件只需执行“node my-jsfile.js”

这就是全部。

答案 1 :(得分:0)

您是否尝试过vm module nodejs?

var vm = require('vm');
var script = "result = x(0,10000); "
    + "function x(y,z) { "
    + "     if (z>0) {"
    + "         return x(y+1,z-1); "
    + "     } else {"
    + "         return y;"
    + "     } "
    + "}"
    + ""; 
var context = {result: null};

vm.createContext(context);

vm.runInContext(script, context);
console.log(context.result);