2014-01-03 7 views
6

Возможно ли определить или даже разумно оценить, сколько энергии используется программой? Идея состоит в том, чтобы профилировать мой код с точки зрения энергопотребления вместо обычной производительности.Возможно ли/легко определить, сколько энергии используется программой?

Достаточно ли измерить использование ЦП, использование графического процессора и доступ к памяти?

+0

Запуск автономной программы и использование монитора активности (mac) или диспетчера задач/процессов (windows) –

+0

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

+0

Это очень интересный вопрос, который нужно рассмотреть. Несколько лет назад я прочитал отчет, который пытался рассчитать, сколько энергии используется один поисковый запрос Google. Конечно, у меня нет ссылки или не помню, каков был результат, но это было удивительно высоко для одного нажатия кнопки. – iamnotmaynard

ответ

3

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

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

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

Просто совет, если вы хотите пройти этот путь, ИБП APC поставляется с этой встроенной функциональностью, а программное обеспечение PowerChute хранит журнал потребления энергии в базе данных доступа (C: \ Program Files \ APC \ PowerChute Personal Edition \ EnergyLog.mdb). Я не уверен, что это верно для всех моделей, но это была прекрасная дополнительная функция, которая появилась с моим (Pro 550). Я бы закладывать данные наряду с Xperf trace (бесплатным встроенным профайлером в Windows, look here for an overview), для того, чтобы соотнести изменения мощности с вашей активностью приложений и отфильтровать запланированные задания и т.д. ...

Тем не менее, помните, что вы будете получить разные результаты на разных аппаратных средствах. Ssd будет отличаться от традиционного жесткого диска, и используемый адаптер grafix также может иметь значение, поэтому вы можете получить приблизительную оценку в целом, измерив «типичную» систему. Настольные системы будут потреблять больше, чем ноутбуки и т. Д. (Также см. this blogpost).

Инструменты для профилирования мощности являются более распространенными для мобильных устройств. Я не специалист в этой области, но я знаю, что там есть довольно tools.