在 node.js 中以低延迟创建 V8 实例
Create V8 instance in node.js with low latency
我有一个 node.js 网络服务器,它应该执行一个 java 脚本字符串,它在运行时以低延迟传递。我基本上是在寻找以下 java 代码的 node.js 版本:
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);
}
}
输出:
Result: 10000
Time for 'createRuntime()' : 741.709313 ms
Time for simulateHTTPRequestAndExucuteScript()' : 0.888719 ms
脚本的运行时创建和执行是两个独立的任务。请注意,10000 次递归调用的实际执行时间小于 1 毫秒。初始化运行时相对较长的时间并不重要,因为这可以在传递字符串之前完成。
如何使用 nodes.js 完成 V8 运行时创建和低延迟 java脚本代码注入?
eh.... node.js 是 v8 运行time 包装器。
您不需要使用 node.js 创建、注入等
阅读关于页面的基本 nodejs:https://nodejs.org/en/about/
基本上,您通过 node.js 编写 javascript、运行(这又是 v8,带有用 js 代码包裹的额外 C++ 库),仅此而已。
在你的情况下,你通过 nodejs 运行 的主要 js 文件将执行你拥有的 js 代码(那个函数 (x) ....)并调用它多少次。
到运行js文件只做"node my-jsfile.js"
就这些了。
你试过nodejs的vm module吗?
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);
我有一个 node.js 网络服务器,它应该执行一个 java 脚本字符串,它在运行时以低延迟传递。我基本上是在寻找以下 java 代码的 node.js 版本:
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);
}
}
输出:
Result: 10000
Time for 'createRuntime()' : 741.709313 ms
Time for simulateHTTPRequestAndExucuteScript()' : 0.888719 ms
脚本的运行时创建和执行是两个独立的任务。请注意,10000 次递归调用的实际执行时间小于 1 毫秒。初始化运行时相对较长的时间并不重要,因为这可以在传递字符串之前完成。
如何使用 nodes.js 完成 V8 运行时创建和低延迟 java脚本代码注入?
eh.... node.js 是 v8 运行time 包装器。 您不需要使用 node.js 创建、注入等 阅读关于页面的基本 nodejs:https://nodejs.org/en/about/ 基本上,您通过 node.js 编写 javascript、运行(这又是 v8,带有用 js 代码包裹的额外 C++ 库),仅此而已。
在你的情况下,你通过 nodejs 运行 的主要 js 文件将执行你拥有的 js 代码(那个函数 (x) ....)并调用它多少次。
到运行js文件只做"node my-jsfile.js"
就这些了。
你试过nodejs的vm module吗?
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);