- PVSM.RU - https://www.pvsm.ru -
Всем привет! Сегодня я хотел бы коснутся темы тестирования производительности андроид приложений. Некоторые моменты будут общими и для других платформ. При решении задачи оценки эффективности оптимизации приложения я столкнулся с неприятной проблемой — флуктуацией результатов измерения с разбросом в ряде случаев более чем на 100%. Ясно что такие результаты не позволяют оценить усилия по оптимизации производительности, которые должны были давать прирост скорости в 20%. Ниже я привожу найденные закономерности, которые позволили снизить разброс до приемлемых 1%-2%. Подробности под катом.
Для предотвращения перегрева устройства существует сервис, который следит за температурой и при достижении пороговых значений начинает реализовывать стратегию охлаждения (например ограничивать максимальную тактовую частоту процессора). Обычно он называется thermald, но возможны вариации в зависимости от вендора.
Чем больше мы хотим получить статистически достоверные данные, тем больше раз мы запускаем тест и тем больше мы подогреваем процессор. Характерная картина результатов измерения в этом случае будет иметь примерно такой вид:
Политики управления частотой процессора также сильно влияют на результаты измерений. Тактовая частота современных многоядерных процессоров может меняется по различным алгоритмам, которые реализует governor.
Широко известные: performance, ondemand, powersafe.
В последствии я старался фиксировать при запуске тестов частоту и активность ядер, что конечно является спорным решением.
Garbage collector может так же осложнить жизнь своими срабатываниями в разные моменты времени.
Сервисы живущие своей жизнью, виджеты погоды, неожиданно начавшаяся установка обновлений могут внести существенные погрешности в измерения.
Делитесь своими методами по повышению точности измерения в перформанс тестах в комментариях!
Автор: Валера
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka-pod-android/250662
Ссылки в тексте:
[1] Источник: http://habrahabr.ru/sandbox/108206/
Нажмите здесь для печати.