42 votes

Codage logiciel économe en énergie

Dans un cadre typique de poche portable/système intégré de Batterie de l'appareil de vie est une préoccupation majeure dans la conception de H/W, S/W et les caractéristiques de l'appareil peut prendre en charge. À partir de la programmation du Logiciel point de vue, on est conscient de MIPS, de la Mémoire(Données et programmes) code optimisé. Je suis conscient du fait que le H/W en mode de veille prolongée, le mode Veille, qui sont utilisés à l'horloge du matériel à moindre Cycles ou tour de l'horloge entirel à inutilisée circutis pour économiser de l'énergie, mais je suis à la recherche de quelques idées de ce point de vue:

Où mon code est en cours d'exécution et il a besoin de garder en cours d'exécution, compte tenu de cette comment puis-je écrire le code "puissance" de manière efficace, de manière à consommer minimum de watts?

Sont des constructions de programmation, structures de données, structures de contrôle qui je devrais regarder pour atteindre une consommation minimale et une fonctionnalité donnée.

Y a-s/w de conception de haut niveau des considérations qui l'on doit garder à l'esprit au moment de la code de la conception de la structure, ou au cours de bas niveau de la conception pour rendre le code le plus efficace de l'énergie(Moins gourmands en énergie que possible?

22voto

macbirdie Points 9417
  • Comme 1800 INFORMATION a dit, éviter d'interrogation, de souscrire à des événements et attendre pour eux de se produire
  • Mise à jour du contenu de la fenêtre seulement quand c'est nécessaire - laissez le système se décider quand à redessiner il
  • Lors de la mise à jour du contenu de la fenêtre, vérifiez que votre code recrée aussi peu de l'invalide région que possible
  • Avec rapide de code du PROCESSEUR va revenir en mode veille prolongée plus rapide et il y a de grandes chances que ce code reste dans le cache L1
  • Opérer sur des données de petite taille, à un moment de sorte que les données des séjours dans des caches ainsi
  • S'assurer que votre application ne prend pas en faire toute action inutile lorsque en arrière-plan
  • faites votre logiciel efficace de l'énergie, mais aussi le pouvoir conscient - mise à jour des graphismes moins souvent sur batterie, désactiver les animations, moins le disque dur raclée

Et de lire quelques autres lignes directrices. ;)

Récemment, une série de messages appelé "Optimisation des Applications Logicielles pour le Pouvoir", ont commencé à apparaître sur Intel Logiciel de Blogs. Peut-être d'une certaine utilité pour les architectures x86 développeurs.

9voto

Tim Williscroft Points 2889

Zeroith, utiliser entièrement statique de la machine qui peut l'arrêter lorsqu'il est inactif. Vous ne pouvez pas battre zéro Hz.

Tout d'abord, passer à un tickless planificateur du système d'exploitation. Se réveiller chaque millisecend ou si les déchets de puissance. Si vous ne pouvez pas, envisagez de réduire le planificateur d'interruption à la place.

Deuxièmement, assurer votre thread inactif est une économie d'énergie, attendre pour la prochaine interruption de l'instruction. Vous pouvez le faire dans le tri des sous-réglementé "userland" la plupart des petits appareils ont.

Troisièmement, si vous disposez d'un sondage ou d'effectuer la confiance de l'utilisateur à des activités comme la mise à jour de l'INTERFACE utilisateur, dormir, faire, et de se rendormir.

Ne faites pas confiance à GUI de cadres que vous n'avez pas vérifié pour "sommeil et de spin" type de code. En particulier le cas de la minuterie, vous pouvez être tenté d'utiliser pour le #2.

Bloquer un thread sur " lire au lieu d'interrogation avec select()/epoll()/ WaitForMultipleObjects(). Met l'accent sur le fil scheuler ( et le cerveau) mais les dispositifs généralement d'accord. Il finit par changer votre conception de haut niveau un peu; il fait de plus en ordre!. Une boucle principale qui interroge toutes les choses que vous Pourriez ne finit lent et inutile sur le PROCESSEUR, mais ne garantit pas la performance. ( Garantie d'être lent)

Mettre en Cache les résultats, paresseusement à créer des choses. Les utilisateurs s'attendent à l'appareil d'être lente afin de ne pas les décevoir. Moins de course, c'est mieux. Exécuter comme peu que vous le pouvez sortir avec. Threads séparés peut être tué lorsque vous arrêtez besoin d'eux.

Essayez d'obtenir plus de mémoire que vous avez besoin, puis vous pouvez l'insérer en plus d'une table de hachage et enregistrez jamais à la recherche. C'est un compromis directe si la mémoire DRAM.

Regardez en temps réel-ier système que vous pensez que vous pourriez avoir besoin. Il permet de gagner du temps (sic) plus tard. - Ils faire mieux avec filetage, trop.

5voto

1800 INFORMATION Points 55907

Ne pas interroger. Utilisez des événements et d’autres primitives du système d’exploitation pour attendre les occurrences à notifier. La scrutation garantit que le processeur restera actif et utilisera plus de vie de la batterie.

5voto

Garry Shutler Points 20898

Dans mon travail sur les téléphones intelligents, la meilleure façon de préserver la durée de vie de la batterie consiste à garantir que tout ce dont vous n’avez pas besoin pour que votre programme fonctionne à cet endroit précis est désactivé.

Par exemple, activez Bluetooth uniquement lorsque vous en avez besoin, de la même manière que les capacités du téléphone, diminuez la luminosité de l'écran lorsque vous n'en avez pas besoin, diminuez le volume, etc.

La puissance utilisée par ces fonctions dépassera généralement de loin la puissance utilisée par votre code.

3voto

geschema Points 928

Pour éviter d'interrogation est une bonne suggestion.

Un microprocesseur de la consommation d'énergie est approximativement proportionnelle à sa fréquence d'horloge, et à la place de sa tension d'alimentation. Si vous avez la possibilité de régler ces à partir d'un logiciel qui pourrait sauver un peu de pouvoir. Aussi, l'extinction de l'parties du processeur que vous n'avez pas besoin (par exemple, unité en virgule flottante) peut aider, mais cela dépend beaucoup de votre plate-forme. En tout cas, vous avez besoin d'un moyen de mesurer la consommation d'énergie réelle de votre processeur, de sorte que vous pouvez trouver ce qui fonctionne et ce qui pas. Tout comme optimisations de la vitesse, de la puissance des optimisations doivent être soigneusement conçus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X