Чи можуть додатки істотно впливати на споживання електроенергії?


16

Чи може щось зробити для одного додатка загального призначення, щоб вплинути на споживання енергії пристрою, на якому він працює?

Я не знайомий з тим, як оптимізація окремих програм може вплинути на споживання електроенергії загалом, чи може хтось пояснити, чи впливають різні підходи до написання програм на енергоспоживання пристрою, на якому вони працюють?

Тобто, чи може одна програма, яка робить те саме, що функціонально, написана різними способами, різко впливає на споживання енергії пристрою взагалі, а не на те, як різні непов'язані програми можуть впливати на споживання енергії пристрою.


8
Зробіть його ефективнішим.
Крістофер Берман

Я не кажу, що ваше запитання відверто поза темою, але я думаю, що книга буде більш підходящою, ніж відповідь на веб-сайті з питань питань. Вам слід надати хоча б якийсь контекст, наприклад, це вбудовані системи, мобільна розробка чи щось інше цілком. Будь-яка відповідь має сильно залежати від цього.
К.Штефф

2
Ви говорите про вбудовані акумуляторні системи? Загалом, ключовим фактором для мінімізації споживання електроенергії є визначення часу, коли системі насправді не доведеться робити багато, і мінімізувати кількість часу, що будь-яка частина системи буде активною, коли для неї насправді нічого немає. зробити. У більшості випадків буде досить чітка межа щодо того, скільки варто докладати зусиль; якщо пристрій буде використовувати 1mAH / день для необхідних функцій, простий режим, який витрачає 10uAH / добу, може бути кращим перед складним, який витрачає лише 1uAH / день (оскільки останній заощадить лише 1% енергії).
supercat

1
Я думав у чомусь загальному, а не в конкретному контексті. Це було питання "просто для цікавості". Але, наприклад, чи є якесь правило для енергозбереження на мобільних пристроях? чи вбудовані системи? або на розробці веб-додатків? Можливо, затримка доступу до дисків та мереж або подібні речі.
Хуан Мануель

1
Я підозрюю, що ви пропускаєте суть. Якщо ви зміните програму на використання радіо вдвічі менше, ви побачите споживання електроенергії, коли ця програма запуститься. Радіо на телефоні не черпає живлення зі постійною швидкістю. Витрата електроенергії безпосередньо залежить від того, що просять зробити програмне забезпечення.
Gort the Robot

Відповіді:


7

Побоювання щодо споживання електроенергії часто наносять шкоду продуктивності, тому їх потрібно збалансувати. Застосовуйте витрати на облік капіталу, щоб розглянути більш ефективне обладнання, і це стає дуже складним компромісом. (просто ви витрачаєте 100 годин, щоб заощадити міліват / годину, або 10 доларів для більш ефективного блоку живлення у комп’ютерів, що працюють з програмним забезпеченням). Єдиний час, коли має комерційний сенс турбуватися про споживання електроенергії (спричинене програмним забезпеченням), - це серверна ферма розміром, яку працює Google, пристрої з акумулятором, і якщо маркетинг хоче поставити галочку на полі Tree Hugging Greenie.

Це занадто складно, щоб його реалізувати, сказавши "Зробіть алгоритми більш чіткими" - ось лише перший крок. Крива продуктивності / потужності та, зокрема, "сприйнята продуктивність" / крива потужності нелінійні. Це залежить від того, чи є у вас контроль та на якому рівні через використовувану ОС.

Крім цього, на запитання будуть відповіді на кожну конкретну ситуацію. Наприклад, я колись працював над системою живлення від акумулятора (орієнтований на 18 місяців на 9 В осередку), який був більш енергоефективним, працюючи на максимальній тактовій частоті протягом короткої тривалості, ніж уві сні, але ще один мікрофон, що працює за аналогічним програмним забезпеченням, краще поставити галочку на повільному годиннику на хвилину або близько того, спати.


це насправді правильна відповідь, апаратне забезпечення відіграє набагато ефективнішу роль у споживанні енергії, ніж програмне забезпечення. Приклад більш ефективного блоку живлення робить ВСЕ пристроєм і затьмарює мікрооптимізацію окремих програм, вносячи їх незначний внесок.

Так, але програма не використовує кожен апарат на пристрої однаково. Наприклад, програма, яка ніколи не використовує жорсткий диск на ПК, буде використовувати значно менше енергії, ніж та, яка постійно читається і записується на жорсткий диск.
Gort the Robot

@StevenBurnap, що не має значення в залежності від високої чіткості, деякі HD віджимають і витягують сік весь час. Найбільш значні оптимізації потужності завжди будуть надходити з обладнання (і мікрокоду в них). Одне і те ж програмне забезпечення із зеленим HD використовуватиме менше енергії, тому апаратне забезпечення все-таки має велике значення.

2
Це не правда. Приєднайте Kill-a-Watt до вашої системи та запустіть два додатки, перше, яке просто додає числа у нескінченному циклі, а друге, яке повторно сканує файл у 5 Гб. Ви побачите різницю. Енергоспоживання, безумовно, залежить від комп'ютера, іноді різко, залежно від того, що йому пропонують.
Gort the Robot

Ось приклад, який показує, що енергоспоживання ПК змінюється виключно на основі програмного забезпечення: codinghorror.com/blog/2005/08/…
Gort the Robot

2

Найкраще, що ви можете зробити - це оптимізувати алгоритми та бізнес-логіку вашої програми.

Ви також можете прийняти певний процес компіляції, багато кодери просто забувають про вбудовані функції та оптимізацію на етапі компіляції, більшість часу це дає вам невелику перевагу щодо продуктивності та, отже, з точки зору оптимізації споживання енергії.


Це правильна відповідь. Оптимізація - єдиний спосіб.
superM

1
Як це правильна відповідь? В системі набагато більше раковин, ніж процесор.
Джеймс

1
@James ваше програмне забезпечення використовує лише процесор? більш нічого?
user827992

3
@ user827992: Ні, в цьому справа. Такі речі, як радіо (GSM / 3G / Wifi) та екран, споживають набагато більше енергії, ніж процесор. Оптимізація алгоритмів тут вам не допоможе. Я б сказав, що в системі, де споживання енергії викликає занепокоєння, оптимізація коду - це передчасна оптимізація.
Джеймс

1
@ user827992: Так, але ці заощадження є незначними порівняно з іншими джерелами споживання акумулятора. Ви можете оптимізувати до -OInfinity все, що вам подобається, але якщо, наприклад, ваш код запитує якийсь прапор десь ви мертві.
Джеймс

2

Правильна відповідь….

"We should forget about small efficiencies, 
say about 97% of the time: premature 
optimization is the root of all evil"
Donald Knuth

Зосередьтеся на наданні цінності своїм клієнтам. Створіть чисте, легко зрозуміле та просте обслуговування.

Тоді, якщо вам потрібна більша «потужність», ви можете профайлювати заявку. За допомогою профілювання ви зафіксуєте вузькі місця, які при зміні забезпечать найбільшу користь та підвищать «ефективність».


4
Я б сказав, що це не відповідає на питання, оскільки ви говорите: "Споживання електроенергії - це не ваша проблема; зосередьтеся на вартості для клієнтів". І це дуже схоже на якусь мантру управління. ОП може мати серйозне обгрунтування для того, щоб вимагати зниження енергоспоживання.
K.Steff

Ну я неправильно зрозумів "споживання енергії". І все-таки я думаю, що він повинен встановити рівень споживання електроенергії, що при досягненні оптимізації слід проводити шляхом аналізу частин системи, які споживають занадто багато енергії. Це можна зробити за допомогою ряду стресових тестів.
Міхал Франк

1

Хоча це правда, що з точки зору процесору робити не багато чого, часто є функції пристрою, які споживають енергію при використанні. На ПК, як правило, нікого не цікавить, але, безумовно, правда, що зчитування диска (припускаючи, що не є SSD-накопичувачами) призведе до того, що жорсткий диск крутиться, а головка рухатиметься, що споживає трохи енергії. На ПК це банально, але на мобільному пристрої це може бути справжньою проблемою.

По телефону найбільш очевидним прикладом цього є спілкування. Надсилання бездротового сигналу забирає енергію. На ПК, підключеному до джерела живлення потужністю 500 Вт, це не має значення. По телефону це не так. Додаток, який постійно оглядає сервер для великої кількості даних, використовуватиме значно більше енергії, ніж той, який взагалі не використовує мережу.

Це дуже реальна проблема, просто google для "Програми для Android вирядили акумулятор". Ось одна з багатьох сторінок, яка розповідає розробникам, як мінімізувати споживання електроенергії.

Загалом, ви хочете оптимізувати продуктивність в цілому (тобто зробити процесор максимально можливим), а також використовувати мережу. Спілкуйтеся якомога рідше якомога менше повідомлень.

Як вже говорили інші, це завдання вирішується після того, як більша частина вашого коду буде завершена, коли ви визначили проблему та профільно використали електроенергію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.