Всегда использовать gpu для композиции экрана

Всегда использовать gpu для композиции экрана

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

Настроить параметры GPU визуализации

Если ваше приложение тормозит, значит часть или все кадры обновления экрана обновляются больше чем 16 миллисекунд. Чтобы визуально увидеть обновления кадров на экране, можно на устройстве включить специальную опцию Настроить параметры GPU визуализации (Profile GPU Rendering).

У вас появится возможность быстро увидеть, сколько времени занимает отрисовка кадров. Напомню, что нужно укладываться в 16 миллисекунд.

Опция доступна на устройствах, начиная с Android 4.1. На устройстве следует активировать режим разработчика. На устройствах с версией 4.2 и выше режим по умолчанию скрыт. Для активации идёт в Настройки | О телефоне и семь раз щёлкаем по строке Номер сборки.

После активации заходим в Опции разработчика и находим пункт Настроить параметры GPU визуализации (Profile GPU rendering), который следует включить. В всплывающим окне выберите опцию На экране в виде столбиков (On screen as bars). В этом случае график будет выводиться поверх запущенного приложения.

Вы можете протестировать не только своё приложение, но и другие. Запустите любое приложение и начинайте работать с ним. Во время работы в нижней части экрана вы увидите обновляемый график. Горизонтальная ось отвечает за прошедшее время. Вертикальная ось показывает время для каждого кадра в миллисекундах. При взаимодействии с приложением, вертикальные полосы рисуются на экране, появляясь слева направо, показывая производительность кадров в течение какого-то времени. Каждый такой столбец представляет собой один кадр для отрисовки экрана. Чем выше высота столбика, тем больше времени уходит на отрисовку. Тонкая зелёная линия является ориентиром и соответствует 16 миллисекундам за кадр. Таким образом, вам нужно стремиться к тому, чтобы при изучении вашего приложения график не выбивался за эту линию.

Рассмотрим увеличенную версию графика.

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

Голубой цвет отвечает за время, используемое на создание и обновление View.

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

Красный цвет представляет собой время для отрисовки.

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

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

Отладить показатель GPU overdraw

Другая настройка позволяет узнать, как часто перерисовывается один и тот же участок экрана (т.е. выполняется лишняя работа). Опять идём в Опции разработчика и находим пункт Отладить показатель GPU overdraw (Debug GPU Overdraw), который следует включить. В всплывающим окне выберите опцию Показывать зоны наложения (Show overdraw areas). Не пугайтесь! Нкоторые элементы на экране изменят свой цвет.

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

Если цвет в приложении не изменился, значит всё отлично. Нет наложения одного цвета поверх другого.

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

Зелёный цвет — перерисовывается дважды. Нужно задуматься об оптимизации.

Читайте также:  Не работает тачскрин на планшете после замены

Розовый цвет — перерисовывается трижды. Всё очень плохо.

Красный цвет — перерисовывается много раз. Что-то пошло не так.

Вы можете самостоятельно проверить своё приложение для поиска проблемных мест. Создайте активность и поместите на неё компонент TextView. Присвойте корневому элементу и текстовой метке какой-нибудь фон в атрибуте android:background. У вас получится следующее: сначала вы закрасили одним цветом самый нижний слой активности. Затем поверх неё рисуется новый слой от TextView. Кстати, на самом TextView рисуется ещё и текст.

В каких-то моментах наложения цветов не избежать. Но представьте себе, что вы таким же образом установили фон для списка ListView, который занимает все площадь активности. Система будет выполнять двойную работу, хотя нижний слой активности пользователь никогда не увидит. А если вдобавок вы создадите ещё и собственную разметку для каждого элемента списка со своим фоном, то вообще получите перебор.

Маленький совет. Поместите после метода setContentView() вызов метода, который уберёт перирисовку экрана цветом темы. Это поможет убрать одно лишнее наложение цвета:

Сделали подробный обзор режима разработчика.

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

Как включить режим разработчика?

Режим настроек для разработчиков есть на всех современных версиях Android:

  • Android 4.0 Kitkat.
  • Android 5.0 Lollipop.
  • Android 6.0 Marshmallow.
  • Android 7.0 Nougat.
  • Android 8.0 Oreo.
  • Android 9.0 Pie.

Чтобы получить доступ к этому разделу настроек, нужно следовать инструкции:

  1. Зайдите в «Настройки» — «О телефоне».
  2. Найдите пункт «Версия ядра» (или «Номер сборки») и кликните по нему несколько раз подряд (5-10).

Если все сделать правильно, появится сообщение со словами «Вы стали разработчиком». После этого в настройках устройства появится раздел «Для разработчиков», подробный обзор которого предлагаем почитать ниже.

Настройки режима разработчика

Данный раздел разделен на тематические подразделы. Мы расскажем о всех функция и возможностях, которые предлагают создатели операционной системы Android.

  • Отчет об ошибке:
  • Интерактивный — позволяет отслеживать статус отчета, указывать дополнительные сведения о проблеме и делать скриншот. Некоторые разделы для сокращения времени подготовки отчета могут быть исключены.
  • Подробный — используется в случае, если устройство не реагирует на действия пользователя или работает слишком медленно.
  • Пароль для резервного копирование: изменение пароля резервного копирования данных для защиты копий данных устройства.
  • Не выключать экран: дисплей смартфона всегда будет включен при зарядке устройства.
  • Включить журнал Bluetooth HCI: все пакеты Bluetooth HCI будут сохраняться в файле.
  • Заводская разблокировка: разрешить или запретить разблокировку загрузчика ОС.
  • Работающие приложения (статистика процессор): просмотр всех работающих в фоновом режиме процессор и приложений, а также данные о потребляемом ими объеме оперативной памяти и времени работы.
  • Цветовой режим: возможность включить цветовое пространство sRGB.
  • Сервис WebView и многопроцессорный WebView (позволяет открывать веб-ссылки в приложениях без использования браузера). Последний пункт позволяет выполнять обработчики WebView отдельно.
  • Автоматические обновления системы: включить/выключить.
  • Демонстрация: активация демонстрационного режима. В это время смартфон показывает 100-процентный уровень заряда и полный уровень сигнала сети и Wi-Fi.
  • Одним из главных преимуществ Android перед другими мобильными ОС всегда была возможность тонкой настройки. Мы рассказывали об изменении интерфейса, но получить контроль можно надо всеми составляющими Android-системы. Согласно нашему опросу, только 22% пользователей когда-либо использовали тонкие настройки графики, из них 15% — чтобы повысить быстродействие, 7% — улучшить производительность в играх.

    Читайте также:  Как сбросить графический пароль на самсунге

    Используете ли вы тонкие настройки графики в смартфоне?

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

    Процессор

    Цель: увеличение времени автономной работы

    Способ: уменьшение средней частоты процессора

    Root-доступ: требуется

    Современные процессоры Android-устройств используют различные технологии для обеспечения баланса между производительностью и автономностью, например, архитектуру ARM big.LITTLE, алгоритмы переключения между кластерами и гибкое изменение тактовой частоты. Несмотря на это, у вас всегда остаётся возможность пожертвовать немного производительности для увеличения времени автономной работы, и, в случае грамотной настройки, эффект снижения производительности окажется минимален. Как это сделать — рассмотрим на примере бесплатного приложения CPU Tuner. CPU Tuner требует права суперпользователя, а для некоторых устройств — ещё и установки стороннего ядра (custom kernel) для доступа ко всем регуляторам.

    CPU tuner (Rooted phones)

    vogtp

    Уже скачали: 1120 пользователей

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

    • interactive — стандартный регулятор, гибко настраивает частоту, допускает увеличенное время работы на высоких частотах;
    • ondemand — нейтральный регулятор без режима энергосбережения, иногда используется по умолчанию;
    • conservative — энергосберегающий регулятор, который поднимает тактовую частоту в два раза медленнее, чем ondemand;
    • powersave — тактовая частота удерживается на минимальном уровне;
    • performance — тактовая частота удерживается на максимальном уровне.

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

    В некоторых регуляторах есть дополнительные опции. Так, в режиме conservative пользователь может выбрать пороговые значения переключения частоты. Например, значение «90» в поле «Вверх» будет означать увеличение тактовой частоты процессора на один шаг при его загрузке более 90%.

    Неопытным пользователям мы рекомендуем использовать профиль «Энергосбережение» вместе с виртуальным регулятором «Сохранение аккумулятора». Однако, досконально разобравшись в CPU Tuner, вы сможете более гибко настраивать режимы и триггеры для их переключения. При настройке мы рекомендуем действовать с осторожностью, чтобы не навредить своему гаджету.

    Графический ускоритель

    Цель: увеличение плавности работы интерфейса, сглаживание изображения в играх

    Способ: настройка графического ускорителя

    Root-доступ: не требуется

    Возможностей настройки графического ускорителя в Android меньше, чем процессора, и они проще, но несмотря на это, могут быть полезны для улучшения производительности устройства. К тому же, эти опции не требуют прав суперпользователя и находятся в стандартном приложении «Настройки». Для доступа к ним сначала необходимо активировать режим разработчика, для чего следует перейти в «Настройки»->«Об устройстве» и семь раз нажать на пункт «Номер сборки». Если пункт с таким названием вы не нашли, то он, скорее всего, скрыт в подменю «Сведения о ПО». Тут же отметим, что перечисленные ниже пункты на разных устройствах могут иметь слегка отличающиеся названия, но узнать их, как правило, не составляет труда.

    Читайте также:  Как сделать большую букву на кнопочном телефоне

    После активации в настройках появится новый раздел с названием «Режим разработчика», и первый пункт который нас в нём интересует — «Принудительная обработка GPU». В зависимости от разработчика той или иной программы, обработка её интерфейса может осуществляться либо процессором, либо графическим ускорителем. Включение принудительной обработки позволяет игнорировать манифест-файл приложения и всегда обрабатывать его с помощью GPU, что делает работу с некоторыми программами быстрее и плавней. Негативный эффект этой опции — небольшое увеличение объёма используемой оперативной памяти на процесс. Однако это было существенно 3–4 года назад, для современных аппаратов с 3–4 ГБ ОЗУ эффект будет минимален. Похожим назначением обладает пункт «Отключить аппаратное наложение», но он отвечает не за интерфейс приложений, а за отрисовку системной компоновки интерфейса.

    Все мы любим в играх гладкую картинку, а не «лесенки» на текстурах. За финальную обработку изображения в играх с поддержкой OpenGL 2.0 отвечает сглаживание 4xMSAA, однако по умолчанию в Android оно отключено. Для его активации следует поставить галочку напротив пункта «Включить 4xMSAA», но стоит помнить, что расплатой за более красивую картинку станет снижение времени автономной работы в играх. Вы можете включать сглаживание при игре во время зарядки, или если автономность для вас не критична, но использовать его постоянно мы не рекомендуем.

    Ещё три пункта в настройках для разработчика не могут повлиять на производительность устройства, а вот заставить его работать субъективно быстрее — вполне. Речь идёт об анимациях в интерфейсе, а настройки, которые отвечают за их работу, носят названия «Масштаб анимации окна», «Масштаб анимации перехода» и «Шкала длительности аниматора». Изменяя эти параметры, вы можете либо значительно ускорить все анимации, установив значения меньше единицы, либо вовсе их отключить. Вне зависимости от вашего выбора, мы рекомендует устанавливать для всех пунктов одну скорость, иначе может пропасть ощущение целостности интерфейса. Впрочем, здесь вы смело можете поэкспериментировать.

    Флэш-память

    Цель: ускорение чтения и записи флэш-памяти

    Способ: изменение кэша для накопителей

    Root-доступ: требуется

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

    Выставить нужное значение кэша можно либо вручную в системных файлах Android, либо с помощью приложения SD Speed Increase. Каким бы способом вы не воспользовались, мы рекомендуем также скачать одну из бесплатных программ для тестирования скорости памяти, чтобы контролировать изменения при каждом увеличении кэша. После того, как скорость начнёт падать, вам останется только вернуть размера кэша на шаг назад и радоваться увеличенному быстродействию.

    Ссылка на основную публикацию
    Восстановление загрузчика windows 10 после установки ubuntu
    Если после установки второй ОС, попыток воспользоваться свободным местом на скрытых разделах диска или их форматирования, в случае системных сбоев,...
    Вакуумный аппарат для дома
    Оглавление В этом обзоре мы рассмотрим вопросы, связанные с выбором бытового вакууматора — устройства для вакуумной упаковки продуктов. Мы разберемся,...
    Варианты подключения телевизора без прокладки кабеля
    Автор: Бызов Алексей, установщик приемного спутникового оборудования Неправильная разводка телевизионного кабеля в доме может не только поставить под угрозу саму...
    Восстановление паролей для андроид
    Установка пароля – это прекрасный способ обезопасить свое устройство. Однако порой случается так, что владелец может забыть пароль. Что же...
    Adblock detector