В устройстве iPhone OS, сколько одновременно работающих NSTimers было бы слишком много? У меня есть куча процедур, вызываемых одним таймером, стреляющим 25 раз в секунду, и все довольно прерывисто, медленно и тяжело. Я думаю о том, чтобы добавить один или несколько дополнительных NSTimers, чтобы немного распределить рабочую нагрузку, но я обеспокоен тем, сколько из них будет в порядке. Это может зависеть от скорости стрельбы каждого индивидуального таймера, который я реализую, поэтому давайте предположим, что скорость стрельбы 20-30 раз в секунду. Итак, сколько NSTimers слишком много?Сколько NSTimers слишком много?
ответ
Внутренние, NSTimers
все реализованы на одном аппаратном таймере. ОС хранит центральный список таймеров для всех запущенных приложений и просто планирует один аппаратный таймер для скорейшего события.
Добавление таймеров не изменяет поведение вашего приложения. Тем не менее, добавление потока в практически однопроцессное приложение упрощает управление временем выполнения, добавление таймеров может помочь вам разделить вашу проблему.
Учитывая время, которое вы цитируете, я предполагаю, что этот таймер является синхронизацией кадров для игры или чего-то подобного. Я бы посоветовал пару вещей:
Разделите свой текущий код чертежа на отдельный поток и запустите в нем тот же самый код таймера. Это должно дать вам больше контроля.
Профилируйте свой код, чтобы узнать, сколько обработки выполняется в каждом из этих слотов 1/25s. Возможно, это (и, вероятно,), что вам просто нужно оптимизировать ваш код.
1 в вашем случае. Добавление дополнительного таймера не ускоряет работу приложения.
Вы должны сделать свой код более эффективным или запустить таймер реже.
Я не знаю о накладных расходах таймера, но он может быть значительным с высокой скоростью огня. Таймеры не созданы для этого, я предлагаю нить в качестве альтернативы.
Похоже, что количество таймеров не является проблемой. Накладные расходы NSTimers в основном несущественны по сравнению с загрузкой, которую вы выполняете в своей «группе процедур». На этот вопрос не беспокойтесь. Используйте столько таймеров, сколько вам нужно. После этого откройте акулу/инструменты и посмотрите, на какие методы вы проводите больше всего времени.
- 1. Сколько абстракции слишком много?
- 2. Сколько EJB слишком много?
- 3. Сколько задач слишком много?
- 4. Сколько слоев слишком много?
- 5. Сколько задач слишком много
- 6. Сколько конструкторов слишком много?
- 7. Cyclomatic сложность, сколько слишком много?
- 8. Сколько тегов div слишком много?
- 9. Сколько данных сеанса слишком много?
- 10. Сколько перенаправления NGinx слишком много?
- 11. Сколько накладных расходов слишком много?
- 12. Сколько PHP-запросов слишком много?
- 13. Импорт модулей - сколько слишком много?
- 14. Сколько из STL слишком много?
- 15. Сколько общих настроек слишком много?
- 16. iPhone: Сколько памяти слишком много?
- 17. Сколько потоковой безопасности слишком много?
- 18. Сколько параметров функции слишком много?
- 19. Сколько буферов nginx слишком много?
- 20. Сколько рубиновых потоков слишком много?
- 21. Сколько столбцов слишком много столбцов?
- 22. mysql - сколько столбцов слишком много?
- 23. Сколько setIntervals слишком много в хорошей практике?
- 24. Сколько параметров слишком много в JavaScript?
- 25. Сколько стоит слишком много Kafka в секунду
- 26. Сколько используемых дескрипторов Windows «слишком много»?
- 27. Инъекция конструктора: Сколько зависимостей слишком много?
- 28. Сколько столбцов таблицы базы данных слишком много?
- 29. SSAS Разделы, сколько их слишком много
- 30. Сколько классов слишком много? Rails STI