Kann eine einzige Universalanwendung den Stromverbrauch des Geräts beeinflussen, auf dem sie ausgeführt wird?
Ich bin nicht vertraut damit, wie Optimierungen an einzelnen Anwendungen den Energieverbrauch allgemein beeinflussen können. Kann jemand erklären, ob verschiedene Ansätze zum Schreiben von Anwendungen den Energieverbrauch des Geräts beeinflussen, auf dem sie ausgeführt werden?
Das heißt, kann ein einzelnes Programm, das genau dasselbe funktional ausführt, auf unterschiedliche Art und Weise geschrieben, den Energieverbrauch eines Geräts im Allgemeinen drastisch beeinflussen, und nicht darüber, wie verschiedene nicht verwandte Programme den Energieverbrauch eines Geräts beeinflussen könnten.
programming-practices
optimization
multi-platform
Juan Manuel
quelle
quelle
Antworten:
Bedenken hinsichtlich des Stromverbrauchs beeinträchtigen häufig die Leistung, daher müssen beide Faktoren ausgeglichen werden. Wenden Sie die Kapitalkostenrechnung an, um eine effizientere Hardware in Betracht zu ziehen, und dies wird zu einem sehr komplexen Kompromiss. (Nehmen Sie sich einfach 100 Stunden Zeit, um eine Milliwattstunde zu sparen, oder 10 US-Dollar für ein effizienteres Netzteil in den Wettbewerbern, auf denen die Software ausgeführt wird). Das einzige Mal, wenn es wirtschaftlich sinnvoll ist, sich über den (durch Software verursachten) Stromverbrauch Gedanken zu machen, ist eine Serverfarm in der Größe von Google, batteriebetriebene Geräte und, wenn das Marketing ein Häkchen bei der Tree Hugging Greenie-Box setzen möchte.
Es ist zu komplex, um es zu trivialisieren, indem man sagt "Machen Sie Algorithmen effektiver" - das ist nur der erste Schritt. Die Leistungskurve und insbesondere die "wahrgenommene Leistung" / Leistungskurve sind nicht linear. Es hängt davon ab, ob und auf welcher Ebene Sie die Kontrolle über das verwendete Betriebssystem haben.
Darüber hinaus hat die Frage unterschiedliche Antworten auf jede spezifische Situation. Ich habe zum Beispiel einmal an einem batteriebetriebenen System gearbeitet (Ziel: 18 Monate auf einer 9-V-Zelle), das bei maximaler Taktrate für kurze Zeit effizienter lief als im Ruhezustand, und ein anderes Mikro, das ähnliche Software ausführt, war besser, mit einer langsamen Taktrate zu ticken für eine Minute oder so dann schlafen.
quelle
Das Beste, was Sie tun können, ist, Ihre Algorithmen und die Geschäftslogik Ihrer Anwendung zu optimieren.
Sie können auch einen bestimmten Kompilierungsprozess anwenden. Viele Programmierer vergessen lediglich die Inline-Funktionen und die Optimierung in einer Kompilierungsphase. In den meisten Fällen erhalten Sie dadurch einen kleinen Vorteil in Bezug auf die Leistung und folglich in Bezug auf die Stromverbrauchsoptimierung.
quelle
Die richtige Antwort ist ...
Konzentrieren Sie sich darauf, Ihren Kunden einen Mehrwert zu bieten. Erstellen Sie eine saubere, verständliche und wartungsfreundliche Lösung.
Wenn Sie mehr Leistung benötigen, können Sie Ihre Anwendung profilieren. Mit der Profilerstellung erkennen Sie Engpässe, die bei Änderungen den größten Nutzen bringen und die "Effizienz" steigern.
quelle
Es ist zwar richtig, dass in Bezug auf die CPU nicht viel getan werden muss, es gibt jedoch häufig Funktionen des Geräts, die bei Verwendung Strom verbrauchen. Auf einem PC kümmert sich meistens niemand darum, aber es ist definitiv richtig, dass ein Festplattenlesevorgang (vorausgesetzt, es handelt sich um Nicht-SSD-Laufwerke) dazu führt, dass sich die Festplatte dreht und der Kopf bewegt, was etwas Strom verbraucht. Auf einem PC ist dies trivial, aber auf einem mobilen Gerät kann dies ein sehr reales Problem sein.
Das offensichtlichste Beispiel für ein Telefon ist die Kommunikation. Das Senden eines Funksignals kostet Energie. Auf einem PC, der an ein 500-Watt-Netzteil angeschlossen ist, spielt dies keine Rolle. An einem Telefon geht es nicht. Eine Anwendung, die einen Server ständig nach großen Datenmengen abfragt, verbraucht erheblich mehr Strom als eine Anwendung, die überhaupt kein Netzwerk verwendet.
Dies ist ein sehr reales Problem, nur Google für "Android-Anwendung hat meinen Akku erschöpft". Auf einer von vielen Seiten erfahren Entwickler, wie sie den Stromverbrauch minimieren können.
Im Allgemeinen möchten Sie die Leistung im Allgemeinen optimieren (dh die CPU so weit wie möglich ausbauen) und auch die Netzwerknutzung optimieren. Kommunizieren Sie so wenig wie möglich mit so kleinen Nachrichten wie möglich.
Wie andere bereits gesagt haben, ist dies eine Aufgabe, nachdem der Großteil Ihres Codes vollständig ist, wenn Sie ein Problem festgestellt haben und einen profilierten Energieverbrauch festgestellt haben.
quelle