¿Hay algo que se pueda hacer para que una sola aplicación de propósito general afecte el consumo de energía del dispositivo en el que se está ejecutando?
No estoy familiarizado con la forma en que las optimizaciones para las aplicaciones individuales pueden afectar el consumo de energía de manera general, ¿alguien puede explicar si los diferentes enfoques para escribir aplicaciones afectan el consumo de energía del dispositivo en el que se están ejecutando?
Es decir, puede un solo programa, que hace exactamente lo mismo funcionalmente, escrito de diferentes maneras que afecta drásticamente el consumo de energía de un dispositivo en general, no sobre cómo los diferentes programas no relacionados pueden afectar el consumo de energía de un dispositivo.
fuente
Respuestas:
Los problemas de consumo de energía a menudo van en detrimento del rendimiento, por lo que ambos deben ser equilibrados. Aplica el costo de la contabilidad de capital para considerar un hardware más eficiente, y se convierte en una compensación muy compleja. (simplemente pasa 100 horas para ahorrar un milivatio / hora, o $ 10 para una fuente de alimentación más eficiente en los equipos que ejecutan el software). La única vez que tiene sentido comercial preocuparse por el consumo de energía (causado por el software) es una granja de servidores del tamaño de Google, dispositivos alimentados por batería, y si el marketing quiere marcar el casillero Tree Hugging Greenie.
Es demasiado complejo para trivializarlo diciendo "Haz que tus algoritmos sean más eficientes", ese es solo el primer paso. La curva de rendimiento / potencia y en particular la curva de "rendimiento percibido" / potencia no son lineales. Depende de si tiene control y hasta qué nivel a través del sistema operativo en uso.
Más allá de eso, la pregunta tendrá diferentes respuestas a cada situación específica. Por ejemplo, una vez trabajé en un sistema alimentado por batería (objetivo de 18 meses en una celda de 9 V) que funcionaba más eficientemente a la velocidad máxima del reloj durante un corto período de tiempo que durmiendo, sin embargo, otro micro software similar que funcionaba mejor era mejor en un reloj lento por un minuto más o menos y luego dormir.
fuente
Lo mejor que puede hacer es optimizar sus algoritmos y la lógica empresarial de su aplicación.
También puede adoptar un proceso de compilación particular, muchos codificadores simplemente se olvidan de las funciones en línea y la optimización en una fase de compilación, la mayoría de las veces esto le da una pequeña ventaja en términos de rendimiento y, en consecuencia, en términos de optimización del consumo de energía.
fuente
La respuesta correcta es ...
Concéntrese en proporcionar valor a sus clientes. Cree una solución limpia, fácil de entender y fácil de mantener.
Entonces, si necesita más "potencia", puede perfilar su aplicación. Con la creación de perfiles, detectará cuellos de botella que, cuando se cambien, proporcionarán el mayor beneficio y aumentarán la "eficiencia".
fuente
Si bien es cierto que en términos de CPU no hay mucho por hacer, a menudo hay características del dispositivo que consumen energía cuando se usan. En una PC, en general a nadie le importa, pero definitivamente es cierto que una lectura de disco (suponiendo que no sean unidades SSD) hará que el disco duro gire y la cabeza se mueva, lo que consumirá un poco de energía. En una PC esto es trivial, pero en un dispositivo móvil, esto puede ser un problema muy real.
En un teléfono, el ejemplo más obvio de esto son las comunicaciones. Enviar una señal inalámbrica requiere energía. En una PC, conectada a una fuente de alimentación de 500 WATT, es intrascendente. En un teléfono, no lo es. Una aplicación que sondea constantemente un servidor en busca de grandes cantidades de datos utilizará dramáticamente más potencia que una que no use ninguna red.
Este es un problema muy real, solo google para "la aplicación de Android agotó mi batería". Aquí hay una de las muchas páginas que le dicen a los desarrolladores cómo minimizar el consumo de energía.
En general, desea optimizar el rendimiento en general (es decir, hacer que la CPU sea lo más posible) y también para el uso de la red. Comuníquese lo menos posible con los mensajes más pequeños posibles.
Como han dicho otros, esta es una tarea para después de que la mayoría de su código esté completo, cuando haya identificado un problema y haya perfilado el uso de energía.
fuente