我有这样的代码:
const test = require('./build/Release/test');
console.time('js');
console.log(f(0, 0, 1000, 1000, 50.6));
console.timeEnd('js');
console.time('c++');
console.log(test.sum(0, 0, 1000, 1000, 50.6));
console.timeEnd('c++');
const test = require('./build/Release/test');
console.time('c++');
console.log(test.sum(0, 0, 1000, 1000, 50.6));
console.timeEnd('c++');
console.time('js');
console.log(f(0, 0, 1000, 1000, 50.6));
console.timeEnd('js');
它们工作正常,给出相同的结果,一切都很好,但唯一的问题是在第一个代码中 JS f() 大约需要 15 毫秒,但在第二个示例中需要大约 3 毫秒。而且这个结果是稳定的(当我多次启动程序时,它给出的结果几乎相同)。怎么会这样?为什么函数在 JS 上的性能取决于从原生插件调用独立函数?
PS 这是两次运行程序的控制台:
{"x": -151.932697, "y": 235.000000}
js: 17.064ms
{"x": -151.932697, "y": 235.000000}
c++: 7.908ms
{"x": -151.932697, "y": 235.000000}
c++: 8.191ms
{"x": -151.932697, "y": 235.000000}
js: 2.578ms