Что быстрее в JavaScript набор маленьких setInterval циклов или одного большого?

Просто задавшись вопросом, были ли стоящий того, чтобы заставить монолитный цикл функционировать или просто добавить циклы, они необходимы.

Большая опция цикла просто была бы циклом обратных вызовов, которые добавляются динамично с добавить функцией.

добавление функции было бы похоже на это

setLoop(function(){
    alert('hahaha! I\'m a really annoying loop that bugs you every tenth of a second');
});

setLoop добавил бы функцию к монолитному циклу.

так, стоящий чего-нибудь в производительности, или я должен просто придерживаться большого количества небольших циклов с помощью setInterval?

вот игра

http://thinktankdesign.ca/metropolis/

и все его библиотеки

http://thinktankdesign.ca/metropolis/scripts/base.js

http://thinktankdesign.ca/metropolis/scripts/menu.js

http://thinktankdesign.ca/metropolis/scripts/grid.js

http://thinktankdesign.ca/metropolis/scripts/cursor.js

http://thinktankdesign.ca/metropolis/scripts/game_logic/controls.js

http://thinktankdesign.ca/metropolis/scripts/game_logic/automata.js

если я буду придерживаться отдельных циклов то будут тысячи из них из-за количества циклов анимации.

Игра является разработчиком башни и сложными вещами как лифты и автомобили/плетеные корзинки. Не говоря уже о циклах для автоматов, управляя событиями, такими как VIP и огни и такой. Когда функциональный (год или два) это будет много похоже на Sim Tower, но изометрический вместо скроллера стороны.

5
задан Robert Hurst 27 April 2010 в 05:56
поделиться

3 ответа

Если все они запланированы отдельно, это означает, что могут происходить вещи (например, обработка событий взаимодействия с пользователем и т. Д.) Между выполнением одних подзадач и другими.В одном большом монолитном цикле каждый цикл цикла будет выполнять все в этом цикле перед возвратом управления обратно пользовательскому вводу. Таким образом, если вы действительно много чего делаете, вероятно, лучше запланировать их независимо, чтобы браузер мог «умнее» определять, что и когда делать.

Исключением может быть случай, если вы действительно намереваетесь / требуете, чтобы все события, происходящие в одном «цикле», происходили без смещения друг от друга, и в этом случае потребуется подход «большого цикла», чтобы гарантировать, что все они срабатывают в в одно и то же время (или, по крайней мере, настолько близко друг к другу, насколько позволяет время выполнения).

3
ответ дан 14 December 2019 в 19:06
поделиться

На ваш вопрос невозможно правильно ответить без достаточных подробностей:

  • Насколько велика ваша монолитная петля?
  • Сколько маленьких петель вы хотите добавить?
  • Насколько малы эти маленькие петли?
  • Чего вы пытаетесь достичь с помощью петель?
  • Будут ли взаимодействовать малые циклы, например, при изменении взаимосвязи переменных или значения замыканий?
  • Можно ли ожидать, что избыточность цикла будет улавливать пропущенные, иначе ускользнет от логических соображений?

Без достаточных подробностей каждый ответ правильно, что делает ваш вопрос бессмысленным.

0
ответ дан 14 December 2019 в 19:06
поделиться

Я могу представить, что вы можете просто использовать setInterval, сохраняя отдельные циклы с контролем над каждым из них, что даст вам большую гибкость, если только КАЖДЫЙ отдельный элемент не должен быть поставлен в очередь, но даже в этот момент я не вижу, где вы бы получили улучшение производительности от этого, что имело бы значение.

2
ответ дан 14 December 2019 в 19:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: