Коллективные обновления в iOS 7: Наконец-то все писают одновременно
Встретил очень остроумное, простое и понятное объяснение одной из новых фишек iOS 7 — «коллективные обновления» (coalesced updates). Эта штука должна повысить эффективность использования сетевых подключений и увеличить время работы телефона от аккумулятора. Я думаю, аналогия вам понравится.
————- «Ну что, время всем сходить в туалет», говорил мой папа во время наших автопутешествий. «Но мне не надо!» раздавалось неизбежное нытье от (как минимум) одного из нас. Папин ответ всегда был один и тот же: «А это не был вопрос». Мой папа всегда фокусировался на том, чтобы максимизировать эффективность, конечно же. Вместо того, чтобы останавливаться для того, чтобы пописал только один человек и продолжить путь, вполне разумно было бы, чтобы все писали во время каждой остановки. Это, как минимум, предотвращает неизбежную неэффективность, появляющуюся десять минут спустя, когда следующий человек начинает чувствовать зов природы.
Как бы очевидно это не звучало, iOS всегда работала по самому неэффективному методу в этом случае, как минимум, до выхода iOS 7 и приложений, для нее разработанных. На данный момент, если какому-то приложению нужно получить доступ в сеть, оно сразу его и получает. Когда это приложение закончило свои дела и через две минуты другому приложению нужна сеть, то это приложение получает доступ, и так далее.
Проблема в том, что пробуждение приложения и выход в сеть — энергетически затратный процесс. Раз уж есть открытое сетевое подключение, есть смысл использовать его по максимуму, а затем закрыть его (и, если возможно, то и приложения, которые его используют). Именно это и обеспечат коллективные обновления в iOS 7. Программы скоро смогут зарегистрироваться в операционной системе и сказать «Эй, я бы хотела выйти в сеть еще раз примерно через час. Мне ничего не надо на протяжении примерно 45 минут, но в любой момент после этого и в промежутке до одного часа, мне было бы круто выйти в онлайн». Операционная система затем изучает все эти запросы и решает, когда же будет лучшее время для выхода в онлайн. И когда этот момент наступит, система предупредит все эти приложения, что подключение установлено и скажет им, что настало время обработать их запросы. И как с вышеупомянутыми остановками во время автопутешествий, это будет не вопрос.
Конечно же, пользователь может (сам того не зная) запустить этот процесс. Если вы разблокируете iPhone и откроете Safari, чтобы посмотреть веб-страничку, iOS 7 заметит это и скажет: «эй, похоже, что у нас тут открытое сетевое соединение. Все просыпайтесь и… делайте свое дело».
Наконец-то в iOS 7 мы сможем получить умные фоновые обновления, которыми будут обеспечены все приложения, в том числе и сторонние. Это означает, что если вы используете какой-то альтернативный почтовый клиент, к примеру, он сможет проверять почту в фоне точно так же, как делает это встроенное приложение Mail.app. И лучшее из этого всего, что аккумулятор iPhone, скорей всего, будет работать дольше благодаря тому факту, что все сетевые запросы этих приложений будут координироваться с максимальной эффективностью. Точно так же, как координировали нас, детишек, во время автопутешествий.
Оригинал
Записей на такую тему не нашлось.