Можно ли что-то сделать для одного приложения общего назначения, чтобы повлиять на энергопотребление устройства, на котором оно работает?
Я не знаком с тем, как оптимизация отдельных приложений может повлиять на энергопотребление в целом, может кто-то объяснить, влияют ли различные подходы к написанию приложений на энергопотребление устройства, на котором они работают?
То есть может ли одна программа, которая выполняет одно и то же действие функционально, написанная разными способами, существенно влиять на энергопотребление устройства в целом, а не на то, как разные несвязанные программы могут влиять на энергопотребление устройства.
programming-practices
optimization
multi-platform
Хуан Мануэль
источник
источник
Ответы:
Проблемы энергопотребления часто ухудшают производительность, поэтому их необходимо сбалансировать. Примените учет стоимости капитала, чтобы рассмотреть более эффективное оборудование, и это становится очень сложным компромиссом. (вы просто тратите 100 часов, чтобы сэкономить милливатт / час, или 10 долларов за более эффективный блок питания в компьютерах, работающих с программным обеспечением). Единственный случай, когда с коммерческой точки зрения имеет смысл беспокоиться об энергопотреблении (вызванном программным обеспечением), - это ферма серверов размером с Google, устройства с батарейным питанием, и если маркетингу нужна галочка на поле Tree Hugging Greenie.
Он слишком сложен, чтобы упростить его, сказав «Сделайте свои алгоритмы более эффективными» - это только первый шаг. Кривая производительности / мощности и, в частности, «воспринимаемая производительность» / кривая мощности являются нелинейными. Это зависит от того, есть ли у вас контроль и на каком уровне используется ОС.
Помимо этого, вопрос будет иметь разные ответы для каждой конкретной ситуации. Например, однажды я работал над системой с батарейным питанием (целевая 18 месяцев на элементе 9 В), которая была более энергоэффективной, работая на максимальной тактовой частоте в течение короткого периода времени, чем в спящем режиме, но еще одна микросхема, работающая с аналогичным программным обеспечением, лучше работала на медленных часах. в течение минуты или около того спать.
источник
Лучшее, что вы можете сделать, это оптимизировать ваши алгоритмы и бизнес-логику вашего приложения.
Вы также можете принять конкретный процесс компиляции, многие кодеры просто забывают о встроенных функциях и оптимизации на этапе компиляции, в большинстве случаев это дает вам небольшое преимущество с точки зрения производительности и, следовательно, с точки зрения оптимизации энергопотребления.
источник
Правильный ответ ....
Сосредоточьтесь на предоставлении ценности для ваших клиентов. Создать решение, которое является чистым, простым для понимания и простым в обслуживании.
Тогда, если вам нужно больше «мощности», вы можете профилировать свое приложение. С помощью профилирования вы сможете определить узкие места, которые при изменении принесут наибольшую выгоду и повысят эффективность.
источник
Хотя это правда, что с точки зрения ЦП ничего не нужно делать, часто есть особенности устройства, которые потребляют энергию при использовании. На ПК, в основном, это никого не волнует, но, безусловно, верно, что чтение с диска (при условии, что диски не SSD) приводят к вращению жесткого диска и движению головки, что потребляет немного энергии. На ПК это тривиально, но на мобильном устройстве это может быть очень реальной проблемой.
На телефоне наиболее очевидным примером этого является связь. Отправка беспроводного сигнала требует энергии. На ПК, подключенном к источнику питания на 500 Вт, это несущественно. На телефоне это не так. Приложение, которое постоянно опрашивает сервер на наличие больших объемов данных, потребляет значительно больше энергии, чем приложение, которое вообще не использует сеть.
Это очень реальная проблема, просто Google для "Android-приложения разряжена моя батарея". Вот одна из многих страниц, рассказывающих разработчикам, как минимизировать энергопотребление.
В целом, вы хотите оптимизировать производительность в целом (т.е. максимально увеличить нагрузку на процессор), а также использовать сеть. Общайтесь как можно меньше с как можно меньшими сообщениями.
Как уже говорили другие, это задача после завершения большей части вашего кода, когда вы определили проблему и профилированное использование мощности.
источник