Originally Posted By: wfaulk
I don't see any reason that they can't make a reasonable guess on battery consumption based on a variety of factors. The CPU is likely to consume a given amount of power based on usage, and it's easy enough to find out which applications used which amount of CPU time. The display probably consumes a known amount of power depending on the number of pixels lit. Same notions with the GPS receiver, GSM radio, etc.


CPU power is incredibly hard to predict unless you're analyzing the stream of instructions, monitoring the DDR bus usage, times ram is in self refresh and so on. Needless to say, this amount of instrumentation is not going on here... Ditto for the radios: GPS power consumption varies easily by 3x depending on number of correlators running, sampling rate and so on whereas this number is just going to be "how many seconds is it on for multiplied by constant". GSM PA power will vary dependent on network conditions *and antenna match* - eg whether something like your hand is close to the antenna.

As for checking the display content for lit pixels... 60 times a second? That's a lot of math unless it's being done by the display itself. I know, I did this at Rio for the OLED product that almost shipped smile

Originally Posted By: wfaulk
I just had a thought. You're not assuming that it consumed 6% of the entire battery, are you? The Battery Use display is telling you the relative levels of battery use between the applications (and hardware, etc.) that have been running since the phone was unplugged. What they're saying is that the Browser application used relatively little of the battery compared to the GSM radio and the display. I can confirm that if you leave a CPU-hungry application running, it does show up with a significantly higher percentage of battery use in that display.


I'm just saying that the usage page is largely a work of fiction. Yes, you can see gross CPU usage (likely seconds of CPU time multiplied by a constant, not taking into account NEON use, memory bandwidth, storage bandwidth, etc)... it's a first-level approximation for generic applications but not conclusive in any way for determining how an unknown CPU load - flash - is behaving on the system.