Я запускаю следующий тест 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разницей во времени. e составляет около 36,5 мс
1 / e (e в секундах) дает мне количество кадров в секунду, как цикл выполнялся в итерации обновления игры. Так я просто лучше понимаю скорость. Но он все еще кажется очень медленным, я не уверен, насколько быстро обычно работает javascript, но я надеялся, что, по крайней мере, 1000 кадров в секунду или даже пара десятков тысяч кадров в секунду было бы неплохо. Цикл 1000 раз будет обычным явлением в обновлении игры, например, при запуске системы частиц.
Чтобы объяснить немного дальше. Если пустой цикл работает только со скоростью около 27 кадров в секунду, игра, реализующая систему частиц в своей итерации обновления, не будет иметь надежды на то, что с этой реализацией превысит 27 кадров в секунду, и, вероятно, намного меньше из-за инструкций, которые должны быть помещены в пустом цикле для реализации системы частиц



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


после некоторых исследований выяснилось, что java-скрипту требуется некоторое время, чтобы разогреться до скорости. вот обновление теста
for(var i = 0; i != 1000; i++) {
var mark = java.lang.System.nanoTime() / 1000000000.0;
for(var j = 0; j != 1000; j++) {
}
var now = java.lang.System.nanoTime() / 1000000000.0;
var e = now - mark;
print(1 / e + " fps")
}
и на последней итерации я получаю 99108.03064699778 кадров в секунду. (он действительно варьируется, самый низкий, который у меня был, на последней итерации был около 50000 кадров в секунду)
Почему вы печатаете
1/e, а неe?