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

в 10:56, , рубрики: Разработка под android, Тестирование мобильных приложений, метки: ,

Всем привет! Сегодня я хотел бы коснутся темы тестирования производительности андроид приложений. Некоторые моменты будут общими и для других платформ. При решении задачи оценки эффективности оптимизации приложения я столкнулся с неприятной проблемой — флуктуацией результатов измерения с разбросом в ряде случаев более чем на 100%. Ясно что такие результаты не позволяют оценить усилия по оптимизации производительности, которые должны были давать прирост скорости в 20%. Ниже я привожу найденные закономерности, которые позволили снизить разброс до приемлемых 1%-2%. Подробности под катом.

Температура имеет значение

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

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

Особенности тестирования производительности андроид приложений - 1

Профили governor

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

Широко известные: performance, ondemand, powersafe.

В последствии я старался фиксировать при запуске тестов частоту и активность ядер, что конечно является спорным решением.

Работа GC

Garbage collector может так же осложнить жизнь своими срабатываниями в разные моменты времени.

Сторонний софт

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

Общие рекомендации

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

Делитесь своими методами по повышению точности измерения в перформанс тестах в комментариях!

Автор: Валера

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js