2013-10-24 3 views
5

Интересно, будет ли этот код накладывать нагрузку на клиента, поскольку тайм-аут так длинный?does setTimeout() влияет на производительность

 //and update this again in a bit 
     setTimeout(function() { 
      updateWeather(lat,lng); 
     }, 60000); 
+2

Почему бы делать отметить на минуту причиной дополнительной нагрузки, чем ничего не делать в течение более короткого времени? ;-) – RobG

+0

Нет, это не так. Однако очень короткий тайм-аут может быть следующим: http://stackoverflow.com/a/18832977/1768303 – Noseratio

+1

Никакого существенного эффекта, 'setTimeout' работает в цикле событий, он не блокирует и не нарушает выполнение. –

ответ

2

не один этот код. Система простаивает на одну минуту. Пока updateWeather не имеет серьезных проблем с производительностью, а интервал короток, setTimeout не будет продуктом (и я считаю, что вы имеете в виду setInterval, а не setTimeout для повторяющихся проверок)

+0

Выбрал ваш ответ, так как вы упомянули setInterval - я предполагаю, что в этом случае я должен использовать setInterval, так как этот пример кода фактически находится внутри самой функции updateWeather, в конце функции. Является ли это плохим idéa, есть ли улучшение производительности при использовании setInterval по сравнению с setTimeout или они одинаковы, а setInterval - это просто удобный способ не делать этого самозанятия, который я делаю? –

+0

Я не тестировал его сам, но с точки зрения элегантности setInterval лучше. Сейчас я проведу бенчмарк. – bobbybee

0

Ответ на ваш вопрос зависит от:

  1. Устройство вы выполняете это на
  2. Среда - сколько раз вы выполняете эту

Автономный SetTimeout бы не повредить браузер; однако, если вы делаете одно и то же много раз, это будет иметь значение.

Взгляните на следующий веб-сайт для получения более прозрений ...

http://ejohn.org/blog/analyzing-timer-performance/

1

60-секундный таймер реализован магией в ОС: в основном он не добавляет загрузки ЦП в течение 60 секунд, которые он ожидает.

Я думаю, updateWeather() опрос внешнего ресурса, поэтому ответ на ваш вопрос - это просто «нет, это нормально». (Поскольку погода не меняет , что часто, я бы сделал это на 5 минут вместо этого, см. Комментарий ниже о времени автономной работы.) (Еще лучше: посмотрите, дает ли поставщик данных о погоде поле, сообщающее вам, когда следующее обновление будет быть и использовать на основе этого setTimeout.)

В других ситуациях, например, если вы собирали данные за эти 60 секунд, а затем переходите и обрабатываете их за один раз, это может вызвать пик большой нагрузки. Который может быть замечен пользователем (например, все анимации затягиваются один раз каждые 60 секунд). В этом случае лучше использовать 5-секундный таймер и обрабатывать данные за 5 секунд за раз.

И наоборот, если вы используете сеть на мобильном устройстве, вам необходимо учитывать срок службы батареи: доминирование в режиме ожидания и поиска. Таким образом, продление времени опроса с 60 секунд до 120 секунд может буквально удвоить срок службы батареи. Илья Григорик имеет очень хорошую главу об этом в своей книге, High Performance Browser Networking, http://shop.oreilly.com/product/0636920028048.do ... вот это: http://chimera.labs.oreilly.com/books/1230000000545/ch08.html#ELIMINATE_POLLING

Смежные вопросы