Тестирование использования батареи - PullRequest
66 голосов
/ 27 сентября 2011

Я хочу проверить, как мое приложение влияет на батарею телефона / планшета.

Существуют ли какие-либо инструменты тестирования, которые позволят мне это сделать?

Например, я хочу проверить, какие модули моего приложения потребляют наибольшее количество батареи и т. Д.

Ответы [ 6 ]

29 голосов
/ 07 января 2015

Существует новый инструмент, который поставляется с Android 5.0.

Вы можете запустить

adb shell dumpsys batterystats > dump.txt

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

adb shell dumpsys batterystats --unplugged your.package.name > dump.txt

Часть > dump.txt помещает все в файл (возможно, просто работает на Windows, не уверен. Но вы можете просто оставитьпосле этого дамп будет распечатан прямо в консоли, где вы можете скопировать его и поместить в файл).

Это работает, только если у вас есть устройство с Android 5.x.Если у вас есть устройство с более низким уровнем, вы можете попробовать использовать

adb shell bugreport > bugreport.txt

Но этот файл будет очень очень большим.(~ 8mb +)

После создания этого файла вы можете использовать Historian Tool от Google

Чтобы использовать его, вы должны установить Python 2.7.9 и выполнить следующую команду

python /path/to/historian.py dump.txt > battery.html

Это создаст файл battery.html, в котором вы сможете просмотреть данные в более удобном формате.

Последнее: если вы хотите сбросить статистику разряда батареи, просто позвоните

adb shell dumpsys batterystats --reset

(работает только с Android 5.x)

22 голосов
/ 28 сентября 2011

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

Вот интересный блого приложении «Power Tutor», которое обеспечивает более точные измерения в работающей системе, чем встроенное приложение батареи: http://gigaom.com/mobile/android-power-consumption-app/. Я не пробовал.

Для другого уровня детализации,Вот документ, который показывает, какие компоненты телефона высасывают больше всего сока (обратите внимание, что статья 2010 года): http://www.usenix.org/event/usenix10/tech/full_papers/Carroll.pdf (просто перейдите к разделу 5, чтобы прочитать их результаты).Они говорят, что яркость экрана - самый большой виновник.

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

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

4 голосов
/ 26 июня 2012

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

eprof - это один инструмент, разработанный некоторыми университетскими выпускниками.

Вы можете найти несколько статейпо этой теме здесь: http://web.ics.purdue.edu/~pathaka/pubs.html

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

1 голос
/ 28 сентября 2011

Начиная с Android 2.3.3 система имеет встроенный монитор батареи.

Настройки -> О телефоне -> Использование батареи

0 голосов
/ 09 апреля 2015

Мы провели аналогичное тестирование, чтобы узнать, как мое приложение отвечает за расход заряда аккумулятора телефона Nexus5.

Но, к сожалению, мы не смогли получить помощь ни от одного инструмента, но в основном это было основано на ручном тестировании.

Мы определили некоторые модули в приложении, которые подозревались в повышенном энергопотреблении.

  1. Модуль определения местоположения, использующий GPS.

  2. Модуль загрузки, которыйиспользует сетевое соединение, запускает фоновую операцию в течение длительного времени.

  3. Модуль создания видео, который также загружает процессор из-за фоновой операции.и так далее ...

Наконец, после 3-4 раундов тестирования у нас была некоторая тенденция в данных, и мы смогли определить модуль, который был большой причиной потребления батареи.

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

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

Надеюсь, мой опытбудет полезно для формулировки требования в исходном вопросе.

0 голосов
/ 28 сентября 2011

Я бы сказал, что нет реального инструмента для его проверки, поскольку его невозможно точно измерить.Если вы возьмете iPhone, вы увидите, что уровень заряда батареи изменится с 40% до 30%, затем оставайтесь там некоторое время, снижайтесь до 20%, снижайте до 15%, повышайте до 25%, возвращайтесь к 20% ECT,Что вы можете сделать, это зарядить свой телефон в течение длительного периода времени, чтобы убедиться, что он полностью заряжен, а затем использовать свое приложение, пока телефон не закроется, и отметить количество времени, которое потребовалось.Теперь сделайте это с другой версией и посмотрите результат.В основном вам придется играть в игру MasterMind с ней, если вы хотите выполнить как можно меньше тестов.Кроме того, если изменение не легко увидеть, оно, вероятно, не очень важно.

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