Черная пятница в UPROCK!

Разрыв в мобильной производительности, 2021 год

Многое изменилось с 2017 года, когда мы в последний раз оценивали глобальный базовый бюджет ресурсов, приходящихся на страницу, в 130-170 КБ.

Благодаря прогрессу в развитии сетей и браузеров (но не устройств), для сайтов, спроектированных “современным” образом появился более щедрый глобальный бюджетный предел. Теперь мы можем позволить себе примерно 100 КБ HTML / CSS / шрифтов и около 300-350 КБ JS (в сжатом виде, в формате gzip). Это общее правило относительно ограничений должно сохранятся как минимум год или два. Как всегда, дьявол в деталях, но главная идея осталась неизменной: когда мы строим цифровой мир, ориентируясь лишь на лучшие устройства, мы делаем его менее доступным для более, чем 80% пользователей.

Обновленная информация о телефонах, сетях, браузерах и новом базовом уровне веб-производительности.

Еще в 2016 году я пытался предать огласке причины и последствия ужасной производительности для большинства пользователей сайтов, созданных с помощью популярных фронтенд-инструментов (инструменты для создания внешней оболочки интерфейса). Негативные последствия были особенно заметны в самом быстро растущем сегменте устройств — телефоны на платформе Android от бюджетного до среднего уровня.

Плохой личный опыт может определить ожидания от экосистемы в целом. О низкой производительности сайта вашей компании свидетельствуют следующие показатели:

  • низкая вовлеченность пользователей;
  • повышение показателя отказов;
  • снижение конверсий. 

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

Кроме случаев, когда сайт запускается с домашнего экрана как PWA (прогрессивное веб-приложение — технология, позволяющая клиентам взаимодействовать с вашим сайтом на смартфоне как с приложением), сайты для пользователей сливаются воедино. Страницы воспринимаются как серия нажатий, легко перемещающих людей по сайтам, как река ссылок. Плохой опыт в этом потоке — это плохо организованный поток, когда его составные части смешиваются между собой.

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

Если пользователь перейдет по ссылке с вашего сайта на сайт, загрузка которого происходит очень медленно — ваша страница будет отображаться столько времени, сколько потребуется серверу для загрузки минимального HTML-содержимого. Так же и в обратном случае, вне зависимости от того, насколько быстро отвечает ваш сайт, если при переходе пользователя со стороннего сайт на ваш, onunload-обработчикам предыдущего сайта требуется слишком много времени для выполнения загрузки страницы (низкая производительность исходной страницы — распространенная проблема), он будет загружаться медленно.

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

Если, нажимая на ссылки, испытываешь неприятные ощущения, зачем продолжать нажимать? Медленные веб-сайты — не единственный способ получить доступ к информации. Существует множество нативных приложений, объединяющих контент и готовых быстро предоставить его при первой же возможности. Медленные веб-сайты встречаются повсеместно и являются большей частью того, с чем борется мобильный Интернет, который, в конечном счете — проигрывает

Низкая производительность сайтов, которые ссылаются на ваш сайт или наоборот, на которые ссылаетесь вы, отрицательно влияет на взаимодействие пользователей с вашим сайтом, даже если он всегда работает быстро. Данную ситуацию очень хорошо описывает следующая цитата: “Выживи из-за ссылки или умри из-за нее”.

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

Разница в производительности также создает дополнительное беспокойство. Высокая изменчивость реакции может создавать эффекты, которые с точки зрения восприятия доминируют над средними значениями или даже медианами. Если 9 нажатий из 10 получают ответ за 100 мс, но каждое 10-е занимает целую секунду, что произойдет с уверенностью и вовлеченностью пользователей? Эти эффекты, связанные с человеческим фактором, и их многообразные последствия означают, что успех вашего сайта частично зависит от общего качества веба.

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

Основная мысль:

Глобальная базовая линия по умолчанию — это устройство Android стоимостью примерно 200 долларов с линией связи 400 Кбит/с и временем приема-передачи (RTT) 400 мс. Это соответствует бюджету ~ 130-170 КБ ресурсов критического пути, в зависимости от их состава: чем больше JS вы включаете, тем меньше должен быть их объем.

В то время устройство за 200 долларов имело 4-8 ядер (медленные, исправные, с низким кэшем), ~ 2 ГБ оперативной памяти и флеш-память MLC NAND. Например, телефон Moto G4.

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

Примечание. Слепота технологического мира к самым востребованным среди людей устройствам — вечная проблема. Количество внимания, прикованного в технической прессе к телефонам высокого уровня, которые отправляются блогерам на обзор (не говоря уже о маркетинговом сумасшествии от Apple) не соответствует реальным объемам поставок этих устройств.

Производители смартфонов (которые часто выступают в роли рекламодателей) требуют внимания к сегменту устройств высокого класса, потому что именно там находится прибыль, а техническая пресса им не перечит. Объем материалов, посвященных устройствам высокого класса, остается непропорциональным объему продаж устройств согласно их ценам. В более сбалансированном мире большинство статей было бы посвящено сообщениям об устройствах среднего класса от LG и Samsung.

Если проанализировать распространение технологий в мире, можно увидеть, что, хотя Apple наконец преодолела 50%-ную долю в США впервые за десятилетие в конце 2020 года, поставки смартфонов iOS стабильно превышают ~ 20% по всему миру, а в большинстве кварталов составляют около 15%.

Можно бесконечно говорить об этих предубеждениях и том, как они проявляются. Но всегда раздражает, что Qualcomm, Samsung Semiconductor, MediaTek и другим поставщикам устройств на Android SoC прощается (даже в случае с устройствами высокого класса) их ужасная цена / производительность.

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

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

С тех пор обсуждение метрик сильно продвинулось вперед, достигнув высшей точки в момент запуска Core Web Vitals (факторы оценки качества ресурсов), которые согласно отчету Chrome о пользовательском опыте были введены, чтобы отразить реальный опыт пользователей. 

Устройства и сети тоже эволюционировали:

Текст: Обновление информации о мобильных процессорах и разрыве в производительности: устройства Android среднего уровня (~ 300 долларов) теперь обладают одноядерной производительностью iPhone 2014 года и многоядерной производительностью iPhone 2015 года.Самые дешевые (большое количество) Android работают как iPhone 2012/2013 годов соответственно.

Между тем, поведение разработчиков не оставляет надежды:

Медианная полезная нагрузка JavaScript на мобильных устройствах только выросла с 2016 года и сейчас составляет более 400 КБ переданного скрипта или почти 2,5 МБ несжатого JS.

Единственным положительным моментом в сложившейся ситуации является то, что рост полезной нагрузки мобильного JavaScript был приостановлен в 2020 году. Однако ответ на вопрос “как скоро смартфоны низкого и среднего класса смогут справляться с таким высоким объемом полезной нагрузки?” — так и не найден.

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

Пожалуй, отсюда и начнем наше приключение в 2021 год.

1. Полная перезагрузка

Чтобы пересчитать глобальный базовый уровень 2017 года, мы хотим обновить базовые значения по нескольким параметрам:

  • Как изменились устройства;
  • Современная производительность и доступность сети;
  • Достижения в обработке контента браузерами.
Контент мертв, да здравствует контент

Не могут ни радовать новости, касающиеся относительно стабильных темпов развития браузеров. Самые большие улучшения, видимые в трассировках, происходят благодаря: 

Это постепенное изменение, наряду с улучшениями потоковой компиляции, помогло гарантировать, что пользователи с меньшей вероятностью заметят необоснованно большую полезную нагрузку JS, которую “современные” инструменты компиляции кода чаще генерируют, чем нет. Более эффективное использование большего количества ядер (перемещение компиляции вне потока) дало сайтам, предоставляющим HTML и CSS-контент, шанс остаться отзывчивыми, даже когда они обременены огромным объемом JS.

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

Проблему для обеспечения хорошего пользовательского опыта создают:

  • остаточные задачи компиляции и распределения ресурсов;
  • управляемые скриптом задачи DOM/Layout в основном потоке.

Примечание. В худшем случае компиляция вне потока не оказывает положительного влияния на одностраничные приложения (SPA) с рендерингом на стороне клиента. Если опыт взаимодействия заблокирован скриптом, который делает невозможным начало запроса данных или генерацию разметки для них, дополнительные ядра не помогут. Некоторые страницы можно починить, добавив директивы <link rel=preload>.

Чаще всего ориентированные на приложения архитектуры, распространяемые популярными стартовыми наборами фреймворков, оставляют командам огромный объем JS, который надо сократить. Это дорогая и изнурительная работа c Webpack, на которую подписались бы не все “опытные разработчики”.

Сообщество React, в частности, плохо обслуживается по причине недостатка руководства, инструментов и поддержки со стороны Facebook. Учитывая масштабы развернувшейся там катастрофы, шокирует тот факт, что в 2021 году (и после недавней повторной разработки сайта документации) в документации по производительности React до сих пор нет никаких указаний относительно допустимого объема ресурсов или бюджетов производительности.

Facebook, тем временем, продолжает набирать сотрудников в команду по производительности, устанавливать метрики и контрольные показатели и, в целом, дисциплинированно подходит к вопросам объемов ресурсов и производительности сайтов, что позволяет командам добиваться успеха, вне зависимости от стека используемых технологий. Такой результат, как правило, имеют усиленные бюджеты задержек и производительности.

Короче, FB знает лучше.

Ниже мы увидим, что скорость, с которой развиваются процессоры, недостаточно быстрая, чтобы иметь хоть малейший шанс справиться с многообразием предлагаемых фронтенд-инженерами ресурсов. Если и есть однозначно хорошие новости об инструментах, то это данные о том, что несколько популярных альтернатив теперь включают возможность предотвращения первоочередной отправки сторонних JS (Next.js, Gatsby), хотя JS-сообщество и остается в упорном отрицании затрат на выполнение скриптов на стороне клиента. 

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

4G — это чудо, 5G — это мираж

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

Базовый показатель этой модели (~ 1,6 с) был получен в результате настройки подключения DNS, TCP / IP и TLS по приемлемым в то время базовым параметрам сети 3G, что оставило только 3400 мс для работы и параллельной борьбы с алгоритмом Нейгла и слабыми процессорами. Добавление всего одного дополнительного подключения к CDN для ресурса критического пути могло привести к провалу всей затеи. Это разговор о сложной цели.

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

Основная причина этого — Reliance Jio (самая быстрорастущая мобильная сеть в мире).

В последние годы в Индии произошел огромный скачок роста числа смартфонов благодаря двум причинам:

Благодаря не сдающим свои позиции прогнозам о росте рынка смартфонов в два раза, не говоря уже об удвоении поставок за последние 5 лет, вырисовывается яркая картинка. 

Основной фактор такого резкого роста — выход Reliance Jio на рынок операторов связи. До прорывного ценообразования и агрессивной популяризации индийская компания Jio предоставляла одни из самых дорогих (относительно доходов населения) услуг передачи данных в мире. За пределами наиболее богатых городов они сильно зависели от 3G. Более того, услуги 3G зачастую работали так же, как и 2G на других рынках, по причине избыточного их предоставления и регулирования скорости передачи данных традиционными операторами связи.

В 2016 году Jio прокатился по субконтиненту, как сезон дождей, обрушив на людей вместо воды инфраструктуру 4G и поток бесплатной информации.

Конкурирующие операторы связи отреагировали мгновенно, агрессивно снизив цены, что привело к общему снижению цен на пакеты услуг почти на 95%.

Блицкриг Jio по развертыванию сети 4G шокировал существующих операторов связи, поскольку людям был предоставлен превосходный продукт по неслыханной цене. Такая ситуация вынудила весь рынок улучшить скорость передачи данных и покрытие. Примерно в 2018 году Индия стала рынком, ориентированным на 4G.

Если в разработке базовых показателей производительности на 2021 год есть хоть малейшая надежда на светлое будущее, то это именно она — наконец-то мы можем обновить наши гипотезы о сети, чтобы выдвинуть предположение о том, что 4G работает медленно почти везде (PDF).

Похоже, что 5G получит еще большее распространение в течение следующих пяти лет. Операторы связи выбирают разные полосы частот в различных географических регионах, при этом производительность 5G сильно зависит от плотности расположения вышек, что сильно добавит путаницы на долгие годы вперед. Стоит сказать, что 5G еще не функционирует в полную силу: даже если богатые пользователи в нескольких географических регионах начинают думать о нем как о “норме”, до его распространения по всему миру далеко.

Примечание. Как всегда, примите в расчет деньги и заявления венчурных капиталистов, но интерпретируйте их размышления о том, что “все знают” и “как обстоят дела” так же, как вы это сделали бы в отношении геополитического совета Генри Киссинджера — как токсичные, настораживающие и, прежде всего, неизменно корыстные.

Старые технические устройства как стартовая точка для определения производительности

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

Хотя, я думаю, это итак интуитивно понятно: смартфоны существуют не первый год (и даже не 10 лет) и большинство пользователей не покупают себе новый телефон каждый год. В настоящее время, большинство людей покупают себе новые смартфоны в качестве замены старому (то есть новые смартфоны приобретают пользователи, которые уже ранее владели смартфоном), а продолжительность работы устройств все продолжает расти.

На данный момент, средний срок замены устройства в мире составляет 33 месяца. На рынках, близких к насыщению смартфонами, это означает, что ожидаемый средний возраст устройства составляет почти 18 месяцев. Новые устройства продолжают работать быстрее при тех же затратах пользователей. Если мы предположим, что средние цены (ASPs) остаются в узком диапазоне из года в год в большинстве географических точек, наилучшим будет представлять “средний телефон” как устройство среднего класса, проданное 18 месяцев назад.

Примечание. Показатель средней цены продажи устройства (ASP) может быть как полезным, так и вводить в заблуждение.

Мировой ASP страдает от тех же стандартных проблем, что и все средние показатели. Незначительное увеличение или уменьшение мирового ASP может скрыть:

Мы можем наблюдать это несоответствие в реальной жизни: пресса сообщает о сильном увеличении ASP и доли iOS даже в тех случаях, когда продажи устройств на платформе Android падают совершенное незначительно. Вместо того, чтобы вникнуть в данные о структуре распределения и показателях временных рядов, пресса регулярно преподносит такую ситуацию как внезапный успех какой-то новой функции Apple. Это правда возможно, но слегка стилизованная версия этих фактов легче проходит тест Оккама: состоятельные пользователи менее чувствительны в вопросе времени принятия решений об обновлении технологий.

В этом есть смысл: во время рецессии (спад в производстве и замедление экономики) замена бытовой электроники — относительная роскошь, заставляющая самых чувствительных к ценам покупателей (в подавляющем большинстве — пользователей Android) отказаться от идеи замены еще функционирующих, но уже устаревших устройств.

Вуаля! Небольшое сокращение подавляющего объема покупок устройств на платформе Android свидетельствует об увеличении APS и доли устройств iOS, поскольку они почти всегда дороже. APS может быть прекрасным диагностическим показателем лишь в ограниченном числе случаев, поэтому необходимо всегда отталкиваться от понимания структуры ваших данных.

Однако средние цены начали расти, поэтому мои прогнозы 2017 года верны только технически:

В 2016 году устройство среднего уровня, пригодное для использования с сим-картой любого оператора, стоило около 200 долларов. В этом году среднее устройство стоит еще дешевле, учитывая тот факт, что производительность остается примерно такой же. Предполагается, что следующие несколько лет ситуация не изменится и производительность подобных устройств будет оставаться неизменной — на среднем уровне. Это одна из причин, по которой в прошлом году, в качестве устройства среднего уровня я советовал Moto G4 и по-прежнему рекомендую его или Moto G5 Plus в этом году.

Медианные устройства по-прежнему отличаются от средних значений, но мы можем закрыть на это глаза. Мировые средние цены 18 месяцев назад составляли ~ 300 долларов, поэтому средняя производительность может быть представлена устройством за 300 долларов, приобретенным в середине 2019 года. Хорошо подходит Moto G7.

Производительность указанных устройств отличается от показателей устройств, которыми пользуются сами состоятельные разработчики, как ночь и (ослепляющий) день. Какой бы шокирующей не была шестикратная разница в производительности однопоточного процессора, это ничто по сравнению с тем, где нам следует установить глобальный базовый уровень: устройство P75+. 

Используя нашу ментальную модель возраста и замены устройств, мы можем примерно оценить, каким может быть устройство с 75-м процентилем (или выше) с точки зрения его цены и возраста, изучив один из двух вариантов:

  • устройства с половиной средней цены и половиной прошедшего срока для замены;
  • устройства со средней ценой и находящиеся на ¾ этапа цикла замены. 

Сегодня любой из этих методов приводит к аналогичному ответу.

Эти показатели неточны по десяткам причин, например потому, что все рынки с более низкими средними ценами еще не достигли насыщения смартфонами. Использование мировых средних цен в качестве эталона может еще больше ввести в заблуждение по причине искажающего эффекта роста сверхвысоких цен на фоне стагнации объемов поставок. Трудно понять, как эти эффекты сокращаются при их объединении, поэтому мы сделаем следующее предположение: возьмем половину средней цены и отметим, насколько это может быть неверно.

Примечание. Несмотря на то, что приведенная здесь модель определения среднего устройства не отличается высокой точностью, я сравнил полученные результаты с внутренним анализом Google и выяснилось, что модель оказалась все-таки верна. 

Разработчики нативных приложений и SDK (набор средств разработки) с глобальным охватом могут классифицировать устройства по категориям высокого / среднего / низкого уровня в зависимости от следующих параметров: 

  • оперативная память;
  • скорость процессора;
  • разрешение экрана. 

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

Нашу модель (средняя цена + возраст устройства) могут повредить многие факторы: 

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

Если предположить, что эти факторы остаются неизменными, то и модель будет полезна. Предупреждаю, всегда проверяйте результаты модели!

В нашем относительно стабильном состоянии за последние 4 года было продано более 90% смартфонов. Замена устройств происходит из-за объективных на то причин: 

  • батареи разряжаются;
  • экраны трескаются;
  • память заполняется. 

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

Так что же можно было купить за 150 долларов в 2019 году?

Знакомьтесь, это Moto E6, который имеет следующие характеристики:

Мягкие, нежные тона Moto E6 2019 года.

Если эти характеристики кажутся устрашающе знакомыми, то это, возможно, потому, что они идентичны параметрам Moto G4 2016 года за 200 долларов, вплоть до техпроцессора 28-нм SoC 2011 года выпуска, который использовался для доступа к ядрам A53 2012 года выпуска. Конечно, есть различия, но не там, где это важно.

Вы можете вспомнить Moto G4, рекомендованный мной в 2016 году в качестве базового уровня для дальнейшей работы по улучшению производительности. Это также модель, которую мы отправили Пэту Минану в нескольких десятках экземпляров, — устройства, на которых и по сей день работает webpagetest.org/easy

Невозможно было предположить, что уже устаревшее сочетание ядер A53 с почти нулевым кэшем и процессора 28-нм будет продолжать преследовать нас пять лет спустя. Сегодняшние устройства P75 рассказывают историю о зияющем разрыве в производительности: производительность для тех, кто находится на верхнем уровне, продолжает расти по сравнению с показателями для бедных, которые навечно привязаны к оборудованию уровня 2014 года.

Но есть и хорошая новость — последние пару лет прогресс в области развития процессоров начал двигаться, хотя и медленно. Это выражается в том, что 28-нм процессоры заменяются на 14-нм или даже на 11-нм, и при этом стоят меньше 200 долларов.

Примечание. В то время как функциональные узлы начинают обнадеживающе развиваться, общие конструктивные особенности основных элементов SoC, поставляемых для экосистемы Android, — нет. Благодаря обновленной конструкции, бюджетные детали наконец получили возможность внеочередного исполнения и улучшенный параллелизм.

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

Apple неизменно выигрывает в тестах производительности и мощности, выделяя место в кристалле процессора для ARB и кэшей, чтобы накормить их очень голодные ядра (среди других улучшений конструкции ядра). Любой поставщик с архитектурной лицензией ARM может играть в эту игру, но либо Qualcomm et al. слишком скупы, чтобы выложить 200 тысяч долларов (или 800 тысяч долларов?) за полную лицензию для настройки ядер устройств, которые они продают, либо они не хотят тратить больше, чтобы финансировать дополнительное время проектирования или увеличить на мм^2 пространство кристалла (оба варианта могут сократить наценки).Какова бы ни была причина, эти конструкции — горячий мусор, стоящий своих денег, если сравнивать с соотношением цена / производительность устройств Apple аналогичного поколения. 

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

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

Осторожно, разрыв

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

Обновленные результаты Geekbench 4 по одноядерным мобильным устройствам для каждой ценовой категории. Синий цвет — iOS одноядерные, красный — Android одноядерные, желтый — бюджетные телефоны Android одноядерные, зеленый — низкий ценовой сегмент, одноядерные.

Напомним, что одноядерная производительность напрямую влияет на скорость в вебе. Одним словом, производительность экосистемы Android на кристалле SoC просто катастрофическая.

Насколько все плохо?

Можно оценить каждую категории в зависимости от количества лет, на которое отстают эти устройства от современных iPhone:

  • Android-устройства 2020 года высокой ценовой категории обладают одноядерной производительностью iPhone 8, выпущенного в третьем квартале 2017 года;
  • Android-устройства средней ценовой категории были немного быстрее, чем iPhone 6, выпущенный в 2014 году;
  • Недорогие Android-устройства наконец догнали iPhone 5, 2012 года выпуска

Вы правильно прочитали: производительность одноядерного Android низкого ценового сегмента одновременно шокирующе низкая и удручающе стабильная.

Экосистема Android на кристалле SoC показала немного лучшие результаты для многоядерной производительности, но и здесь разрыв в производительности продолжает расти. Синий цвет — iOS многоядерные, красный — Android многоядерные, желтый — бюджетные телефоны Android многоядерные, зеленый - низкий ценовой сегмент, многоядерные.

Многоядерная производительность демонстрирует ту же основную истину: iOS-устройства и самые дорогие Android-устройства все больше отдаляются от устройств, занимающих наибольший объем рынка. Самые быстрые Android-устройства, как ожидается, будут отставать на 18-24 месяца по причине скупого выбора размера кэша, определяемого Qualcomm, Samsung Semiconductor, MediaTek и другими производителями. Не переплачивайте за глушитель в виде телефона Android.

Основные факторы, влияющие на непрекращающийся рост разрыва в производительности — выбор конструкции процессора и экономические соображения.

Для обеспеченного сегмента людей ситуация продолжает становиться все лучше и лучше, а для всех остальных — все хуже. Если при создании цифрового мира, мы будем ориентироваться на лучшие устройства, то создаваемый нами пользовательский опыт будет становиться все хуже для тех, кто не может позволить себе последние версии iPhone или флагманы Samsung за 800 долларов.

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

Разработчики, особенно в компаниях Кремниевой долины, по определению богаты и обладают широкими правами согласно мировым историческим стандартам. Подобно высшим сословиям прошлого, люди, живущие в полном комфорте (“DX”), счастливо заявляют, насколько он важен.

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

Однако вместо того, чтобы отслеживать такие улучшения, нам удобно верить в следующее убеждение: каждый раз, когда повышается наш комфорт, это обязательно должно улучшать пользовательский опыт. Но, к сожалению, это убеждение не имеет достаточно доказательств, чтобы быть правдой. Опыт учит нас обратному — именно забота о наименее обеспеченном сигменте пользователей может привести к изменениям. В 2021 году пользовательский опыт, основанный на опыте разработчиков, настолько же неправдоподобен, насколько кривая Лаффера. Не существует надежной замены состраданию.

2. Глобальный базовый уровень 2021 года

Руководствуясь этими соображениями, я считаю важным установить базовый уровень устройств и сетевую цель для простых людей. Этот показатель послужит заменой до тех пор, пока не будут получены данные о пользователях сайта или сервиса, из которых можно будет сделать обоснованные выводы об их потребностях и соответствующих бюджетах ресурсов.

Глобальный базовый уровень вдвойне важен для универсальных фреймворков и библиотек, поскольку они будут включены в проекты, ориентированные на пользователей соответствующего уровня, независимо от того, учитывают это разработчики или нет. Инструменты, которые не могут уместиться в пределах, скажем, 10% нашего базового бюджета, должны быть помечены как предназначенные только для десктопных версий или вообще заменены на другие. Многие популярные инструменты за последние 5 лет беззаботно преодолели эти лимиты, если говорить о базовом уровне 2017 года, и результаты были предсказуемо плохими.

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

Глобальный отчет OpenSignal о скорости соединения (PDF) предполагает, что конфигурация 4G WebPageTest по умолчанию (9 Мбит/с / 170 мс RTT) является разумной заменой сетевого соединения P75. Конфигурация LTE WPT (12 Мбит/с / 70 мс RTT) на самом деле может быть слишком скромной для сегодняшней оценки P50. Что-то ближе к 25 Мбит/с в настоящее время приближается к мировой медиане. Прогресс в сети поражает, особенно это касается пропускной способности канала. К сожалению, данные о задержке получить труднее даже из Google, поэтому судить о прогрессе в этой области несколько сложнее.

Что касается устройств, то ситуация с P75 остается плачевной и практически не меняется по сравнению с базовым уровнем, предложенным более пяти лет назад. Медленные ядра A53 — конструкция, впервые представленная почти десять лет назад — по-прежнему доминируют в мире, лишь незначительно отличаясь частотой процессора (за счет улучшения функциональных узлов) и сочетанием с GPU (графический процессор). 

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

Удивительно, но я считаю, что, по крайней мере, в следующем году мы должны рассматривать почтенный Moto G4 в качестве нашего базового устройства. Если вы не можете купить новый, то Moto E6 2020 года является захватывающим воспроизведением классики. Фактически, можно сказать, что это один и тот же телефон. Moto E7 — это превью грядущих лучших дней, котрые не могут наступить слишком скоро.

Все модели неправильные, но некоторые из них полезны”.

После того, как мы собрали все данные вместе, что нам остается? Взяв за основу наши предыдущие цели в 5 секунд для первой загрузки и 2 секунды для второй загрузки, что мы можем себе позволить?

При добавлении новых числовых показателей P75 сетевые улучшения выглядят драматичными. Время первоначальной установки соединения сокращается вдвое, с 1600 мс до 750 мс, что освобождает значительное пространство для передачи большего количества данных за то же время. Пропускная способность канала увеличивается до 9 Мбит/с, что достаточно для передачи более 4МБ контента через одно соединение в нашем 5-секундном промежутке (1 байт равен 8 бит, поэтому 9 Мбит/с чуть больше ~ 1 МБ/с). 

Конечно, если большую часть этого контента составляет JavaScript, он должен быть скомпилирован и запущен, что значительно сократит наш временной интервал для загрузки контента. Используя одно соединение (благодаря магии HTTP/2), сайт, состоящий в основном из загруженного JavaScript, может в 2021 году весить почти 600 КБ и по-прежнему достигать нужного показателя первой загрузки.

Тем не менее, это очень хорошая точка для поиска равновесия. Установка одного дополнительного TCP/TLS-соединения в рамках критического пути уменьшает объем на 100 КБ (как и последующие соединения). Серии запросов данных, высокие значения TTFB и постоянно присутствующие проблемы с отображением шрифтов делают эти верхние пределы намного выше, чем то, к чему должен стремиться сайт, нацеленный на установление стабильно хорошего времени загрузки. На практике вы не можете позволить себе 600 КБ контента, если ваше приложение построено во все более популярном стиле, как одностраничное.

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

Если вы хотите поиграть с факторами и посмотреть, как они влияют на исход, вы можете попробовать эту слегка обновленную версию калькулятора 2017 года (запустите более крупную версию в новой вкладке здесь).

Вертикальная ось — время реакции, горизонтальная — информация в КБ (сжатая). Пунктирная линия — бюджет 5 секунд.

Эта модель поведения браузера, сетевых воздействий и времени реакции устройства, конечно, не подходит для вашего сайта. Она может не походить как в общем, так и в каких-то частных моментах. Возможно, ваш контент — это только лишь HTML, CSS и изображения, что позволяет значительно увеличить бюджет. А возможно, ваш JS не включен в критический путь визуализации, но по-прежнему создает длительные задержки из-за отложенной загрузки. Никто реально не может предсказать, сколько работы с основным потоком вызовет конкретный объем JS. Так что это обоснованное предположение, учитывающее некоторые отступления, для учета худшего случая построения контента (что встречается чаще, чем вы или я хотели бы поверить).

Тогда, по самым скромным оценкам, предполагая, что необходимо установить по крайней мере 2 соединения (сжигающие  ~ 1400 из наших 5000 мс), и что ресурсы скрипта включены в критический путь, новый глобальный базовый уровень оставляет пространство для ~ 100 КБ (формат gzip) HTML / CSS / шрифтов и 300-350 КБ JavaScript (в сжатом виде). Необходимо вычесть размер передачи изображений, включенных в критический путь для LCP (largest contentful paint — время отрисовки самой большой и видимой части содержимого на первом экране сайта), если таковые имеются, из размера одного из указанных сегментов, поскольку детали имеют большое значение. Для “современных” страниц пол мегабайта — это приличный бюджет.

Много ли это? Как минимум, это в 2-4 раза превышает наш предыдущий бюджет, и, поскольку процессоры самой низкой ценовой категории, наконец, станут работать быстрее и продолжат свое развитие в этом направлении в течение следующих нескольких лет, можно ожидать, что этот показатель будет еще больше увеличиваться для контента, предоставляемого надлежащим образом.

К сожалению, сайты в большинстве своем налажены и структурированы совсем не идеально, а большая часть мобильных веб-страниц отправляют JS в объеме, превышающем тот, что указан выше. Но в конце туннеля есть свет: если мы сможем сдержать рост полезной нагрузки JS еще на год или два — или немного повернуть тенденцию вспять, — мы сможем создать удобную сеть для большинства пользователей мира к середине десятилетия.

Чтобы достичь этой цели, необходимо, в каком то смысле, пойти на предательство своего класса: ради выздоровления нашей экосистемы фронтенд-сообществу придется еще на какое-то время поставить в приоритет общие интересы, а не свой личный комфорт. Последние 6 лет консультаций с партнерскими командами больше напоминали мрачный трейлер к фильму “День сурка” — непрекращающийся парад сайтов, потерпевших неудачу с самого начала из-за использования архитектур, не соответствующим поставленным задачам и рынкам: 

  • фреймворк;
  • сборщик модулей;
  • SPA (одностраничное приложение). 

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

Базовые линии и бюджеты остаются жизненно важными

Я упомянул в начале этой слишком длинной статьи, что с 2017 года разрабатывались метрики, которые были бы лучше “времени до интерактивности” (Time to Interactive). Профессионализм, с которым были разработаны, протестированы и усовершенствованы новые Core Web Vitals (факторы оценки качества ресурсов, далее - CWV), вселяют уверенность. Входящие в них метрики и ограничения позволяют фиксировать важные аспекты опыта взаимодействия со страницами с учетом того, что пользователи воспринимают их на реальных устройствах и в сетях. 

Поскольку они являются скорее RUM-метриками (онлайн-измерение скорости), чем тестированием производительности, они выступают как базовая истина для сайта и представляются в обобщенном виде в отчете Chrome о пользовательском опыте (CrUX). Получение данных о производительности сайтов на уровне пользователей без специальных инструментов — это сбывшаяся мечта 2016 года. Лучше всего то, что метрики и ограничения могут продолжать развиваться в будущем, когда мы обретем уверенность в том, что можем точно измерить другие значимые компоненты пути пользователя.

Эти метрики, какими бы ценными они ни были, еще не дают нам достаточно информации, чтобы всегда принимать наилучшие решения при разработке новых сайтов. Нам необходимо продолжить устанавливать бюджеты производительности для команд, занимающихся разработкой, не в последнюю очередь потому, что соответствие им может быть автоматизировано в потоках CI / CD (Непрерывная интеграция / Непрерывная поставка). Для сбора данных из отчета Chrome и собственной RUM-аналитики этих показателей требуется живой трафик, а это означает, что результаты можно предсказать, но проверены они могут быть только после развертывания. 

И бюджеты, и RUM-аналитика останутся мощными инструментами для преодоления пузыря привилегий высокой производительности, который окружает сегодняшние рассуждения о фронтенде. Единственные верные подходы, которые помогут командам сделать первый шаг к реализации главной цели фронтенда — созданию сети, которая действительно доступна для всех:

  • Принимать решения и делать выбор, на основе базового уровня;
  • Измерять, как они работают для реальных пользователей.
Источник
и
:
arrow