2017-01-10 4 views
0

J'ai lu la documentation d'Apple sur la consommation d'énergie du processeur, mais j'ai encore des questions persistantes.Quelles sont les spécificités de la relation entre l'utilisation du processeur et la consommation d'énergie sur iOS?

Est-ce que l'utilisation de l'UC à 1% a le même niveau de surcharge pour maintenir l'UC sous tension que l'utilisation de l'UC à 100%?

Chaque noyau se met-il sous et hors tension indépendamment?

Combien de temps cela prend-il avant que le processeur s'éteigne après avoir démarré au ralenti?

Le système utilisera-t-il généralement la CPU pour ses propres tâches, gardant ainsi le CPU sous tension?

Pour mon application en particulier, je trouve qu'il est difficile d'obtenir le CPU à 0% pour toute période de temps décente. Dans une session typique, il y aura au moins un flux constant d'appels de délégués UIScrollView et d'appels de recyclage UITableViewCell lorsque l'utilisateur se déplacera dans l'application, et encore moins interagira avec le contenu. Cependant, sur la base de ce post, https://apple.stackexchange.com/questions/2876/why-does-gps-on-the-iphone-use-so-much-power, la CPU semble être un coupable d'énergie majeur. J'espère que même une petite pause pendant qu'ils utilisent l'application permettrait au CPU d'économiser de l'énergie, alors je peux simplement travailler sur se débarrasser des tâches de longue durée.

Répondre

2

Il s'agit probablement d'une question trop large pour être vraiment traitée dans ce format. Tout cela "dépend" et peut changer à mesure que le système d'exploitation et le matériel changent. Cependant, vous devriez commencer par regarder les différents energy-related videos from WWDC (il y en a beaucoup).

En principe, la différence entre l'utilisation du processeur à 0% et l'utilisation du processeur à 1% est énorme. Cependant, la différence entre 1% et 100% est également énorme. Le système allume et éteint les différentes parties de l'unité centrale (y compris un noyau entier) en fonction de son niveau d'occupation, et s'il peut atteindre zéro, même quelques dizaines de millisecondes, il peut améliorer considérablement la durée de vie de la batterie (c'est pourquoi les versions récentes d'iOS vous permettent de spécifier des tolérances de temporisateur, de sorte qu'il peut fonctionner en groupe et revenir ensuite en mode basse consommation). Tout cela dit, vous ne devriez pas vous attendre à être à zéro CPU pendant que l'utilisateur interagit réellement avec votre application. Évidemment répondre à l'utilisateur va prendre du travail. Vous devriez explorer votre consommation d'énergie avec les Instruments pour chercher des endroits excessifs, mais je m'attendrais à ce que le CPU "fasse des choses" pendant que l'utilisateur défile (comment ne pas le faire?) Vous ne devriez pas essayer d'injecter artificiellement des pauses ou tout pour laisser le processeur dormir. En règle générale, il est préférable d'utiliser complètement le processeur si cela vous permet de le faire plus rapidement, puis de ne rien faire. Par ce que je veux dire, il est préférable d'analyser tout un téléchargement massif (par exemple) aussi vite que possible et utiliser 100% CPU, que de l'étaler et d'utiliser 20% de CPU pour 5 fois plus longtemps.

La CPU est là pour être utilisée. Vous ne voulez tout simplement pas le gaspiller.