Pull to refresh

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

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

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


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

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



Профили governor


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

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

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

Работа GC


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

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


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

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


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

Делитесь своими методами по повышению точности измерения в перформанс тестах в комментариях!
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.