Безопасное значение энергетического воздействия в iOS

Я создал приложение для iOS, и его первый этап почти завершен. Основной поток приложения заключается в том, что пользователь может добавить свое предложение. Другие пользователи могут воспользоваться этим предложением, забронировав его. Количество предложений постоянно увеличивается/обновляется, поэтому все данные в приложении загружаются с сервера. Теперь в навигаторе отладки все значения более или менее находятся в безопасной области (зеленая область), как показано:

введите здесь описание изображения

Но энергетическое воздействие:

введите здесь описание изображения Это время, когда приложение запрашивает у сервера загрузку элементов в списке. Теперь мои вопросы:

  1. Что такое энергетическое воздействие? (искал, но не смог найти ничего, чтобы иметь правильное понимание)
  2. Каковы возможные причины его высокой ценности?
  3. Какова его безопасная стоимость? Нужно ли мне пытаться сделать его низким?
  4. Если да, то какой возможный подход я могу попытаться сделать низким?

Более того, даже если пользователь не взаимодействует с приложением, энергетическое воздействие (не совсем нулевое):

введите здесь описание изображения

Принимая во внимание, что согласно документам Apple:

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

Буду признателен за любую помощь, так как я новичок в iOS.


person kinza    schedule 26.03.2018    source источник


Ответы (1)


Проверьте, как часто вы пингуете процессор. Большая часть экономии энергии достигается за счет перехода процессора в состояния с лучшим энергосбережением (называемые C-состояниями). Если вы проверяете слишком часто, процессор не спит, и вы потребляете гораздо больше энергии.

Хорошее эмпирическое правило состоит в том, чтобы как можно меньше пинговать/проверять, не оказывая существенного влияния на производительность.

Давайте посмотрим на ваше среднее использование компонентов. «Накладные расходы» обычно относятся к чрезмерному количеству переключений контекста. Одним из возможных решений является дополнительная буферизация данных, чтобы уменьшить количество сетевых вызовов. Другая возможность — избыточное использование памяти, приводящее к большому количеству подкачки страниц. Обычно это происходит только в том случае, если вы превышаете реальное использование памяти/ОЗУ.

«Загрузка ЦП» выглядит высокой, особенно если учесть, что вы не выполняете много вычислений. Посмотрите на мой комментарий о минимизации любого пинга/проверки.

person Taylor Kidd    schedule 29.03.2018
comment
Спасибо за такой подробный ответ. Как вы упомянули пинг, мое приложение пингует сервер каждые 25 секунд, чтобы поддерживать подключение к сокету. Я изменил 25 на 35, но это никак не сказалось на энергетическом воздействии. Если я увеличу его больше, соединение прекратится, и уведомления будут пропущены. (Мое приложение работает с мгновенными уведомлениями, как и приложения по запросу). Можете ли вы предоставить мне какое-то решение, рассмотрев этот сценарий сокета? - person kinza; 30.03.2018