Le applicazioni possono influire sul consumo energetico in modo sostanziale?

16

C'è qualcosa che può essere fatto per una singola applicazione generica per influenzare il consumo energetico del dispositivo su cui è in esecuzione?

Non ho familiarità con il modo in cui le ottimizzazioni per le singole applicazioni possono influenzare il consumo di energia in modo generale, qualcuno può spiegare se approcci diversi alla scrittura delle applicazioni influiscono sul consumo energetico del dispositivo su cui sono in esecuzione?

Cioè, un singolo programma, che fa esattamente la stessa cosa funzionalmente, scritto in modi diversi influisce drasticamente sul consumo energetico di un dispositivo in generale, non su come i diversi programmi non correlati potrebbero influenzare il consumo energetico di un dispositivo .

    
posta Juan Manuel 13.07.2012 - 20:40
fonte

4 risposte

7

Le preoccupazioni relative al consumo di energia sono spesso a detrimento delle prestazioni, quindi i due devono essere bilanciati. Applicare il costo della contabilità del capitale per considerare un hardware più efficiente, e diventa un compromesso molto complesso. (semplicemente spendete 100 ore per salvare un milliwatt / ora, o $ 10 per un PSU più efficiente nei conputatori che eseguono il software). L'unica volta che ha senso commerciale preoccuparsi del consumo di energia (causato dal software) è una server farm delle dimensioni di Google, dispositivi alimentati a batteria e se il marketing vuole un segno di spunta nella casella Tree Hugging Greenie.

È troppo complesso per banalizzarlo dicendo "Rendi gli algoritmi più efficienti" - questo è solo il primo passo. La curva di prestazione / potenza e in particolare la "performance percepita" / curva di potenza non sono lineari. Dipende se hai il controllo e a quale livello attraverso il sistema operativo in uso.

Oltre a ciò, la domanda avrà risposte diverse per ogni situazione specifica. Per esempio, una volta ho lavorato su un sistema alimentato a batteria (obiettivo 18 mesi su una cella 9V) che era più efficiente in termini di potenza alla massima velocità di clock per una durata breve rispetto al sonno, ma un altro micro che esegue software simile era meglio fare il tick su un orologio lento per un minuto o così poi dormi.

    
risposta data 13.07.2012 - 23:26
fonte
2

La cosa migliore che puoi fare è ottimizzare i tuoi algoritmi e la logica di business della tua applicazione.

Puoi anche adottare un particolare processo di compilazione, molti programmatori dimenticano le funzioni inline e l'ottimizzazione in una fase di compilazione, il più delle volte questo ti dà un piccolo vantaggio in termini di prestazioni e, di conseguenza, in termini di ottimizzazione del consumo energetico .

    
risposta data 13.07.2012 - 20:48
fonte
2

La risposta giusta è ....

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

Concentrati a fornire valore ai tuoi clienti. Crea una soluzione che sia pulita, facile da capire e di facile manutenzione.

Quindi se hai bisogno di più "potere" puoi profilare la tua applicazione. Con la profilatura si determinano i colli di bottiglia che, una volta modificati, forniranno il maggior beneficio e un incremento di "efficienza".

    
risposta data 13.07.2012 - 21:10
fonte
1

Anche se è vero che in termini di CPU non c'è molto da fare, ci sono spesso caratteristiche del dispositivo che consumano energia quando vengono utilizzate. Su un PC, per lo più non importa a nessuno, ma è sicuramente vero che un disco letto (assumendo unità non SSD) farà girare il disco rigido e la testa si muoverà, il che consumerà un po 'di energia. Su un PC questo è banale, ma su un dispositivo mobile, questo può essere un problema molto reale.

Su un telefono, l'esempio più evidente di questo è la comunicazione. L'invio di un segnale wireless richiede energia. Su un PC, collegato a un alimentatore da 500 WATT, è irrilevante. Su un telefono, non lo è. Un'applicazione che esegue costantemente il polling di un server per grandi quantità di dati utilizzerà una potenza nettamente superiore rispetto a una che non utilizza affatto la rete.

Questo è un problema molto reale, solo Google per "L'applicazione Android ha prosciugato la mia batteria". Qui è una delle molte pagine che dicono agli sviluppatori come minimizzare il consumo energetico.

In generale, si desidera ottimizzare le prestazioni in generale (ad esempio, rendere la CPU il più possibile) e anche per l'utilizzo della rete. Comunicare il meno possibile con i messaggi più piccoli possibili.

Come altri hanno già detto, questo è un compito per dopo la maggior parte del tuo codice è completo, quando hai identificato un problema e un consumo energetico profilato.

    
risposta data 14.07.2012 - 19:17
fonte

Leggi altre domande sui tag