【发布时间】:2018-09-19 01:59:54
【问题描述】:
我正在运行以下 javascript 测试
var mark = java.lang.System.nanoTime() / 1000000000.0;
for(var i = 0; i != 1000; i++) {
}
var now = java.lang.System.nanoTime() / 1000000000.0;
var e = now - mark;
print(1 / e);
得到这个结果
27.361456496425802
这似乎真的很慢,几乎是一个错误或我做错了什么。这是java代码
try {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
String[] lines = IO.readAllLines(IO.file(root, "LoadList.txt"));
String script = "";
for(int i = 0; i != lines.length; i++) {
String file = lines[i].trim();
if(!file.startsWith("#") && file.length() != 0) {
script += IO.readAllText(IO.file(root, file));
}
}
engine.eval(script);
} catch(Exception ex) {
ex.printStackTrace();
}
有谁知道我做错了什么,或者看到过此类问题并知道如何解决?
提前致谢
【问题讨论】:
-
为什么要打印
1/e而不是e? -
您打印
1/e与e时间差异。e大约是 36.5ms -
1/e(e 以秒为单位)为我提供每秒帧数,就像循环在游戏更新迭代中运行一样。我只是更好地了解这种方式的速度。但它看起来仍然很慢,我不确定 javascript 通常运行多快,但我希望至少每秒 1000 帧甚至每秒几千帧的速度会很好。 1000 次循环在游戏更新中很常见,例如运行粒子系统
-
再解释一下。如果空循环仅以每秒 27 帧左右的速度运行,那么在其更新迭代中实现粒子系统的游戏将没有希望通过此实现达到每秒 27 帧以上,并且可能会更少,因为必须输入指令在空循环中实现粒子系统
标签: javascript java nashorn