Why can't the phones just detect a high CPU load, and then increase the CPU speed? It would be agnostic and not care about a specific name of an executed app, and would increase performance on-demand?
They do exactly that, but then throttle back down. The GPU speeds are a bit more murky, but for CPU, they typically use the ondemand governor, which is the default for most PC Linux distros, too. It detects a load, spikes the CPU speed, and then decreases speed a bit, slowly, to try to find a good balance (eventually going into the lowest active idle state allowed, if the load is low enough). I changed mine to MSM-DCVS, which is made to rapidly change power states on Snapdragons, scaling up and down as needed. It got much better standby life, but smoothness in the main UI, and some programs, weren't as good as with the default governor. I went back to the default governor*. TANSTAAFL.
On Windows, the "passive" CPU policy is more or less equivalent to the "conservative" governor in Linux, and "active" similar to the "ondemand" governor. Then, much like with major OEM notebooks, the maker of the phone has one or more utilities to further tweak the policy to improve the experience just for that hardware, or has tweaked the kernel source code towards that end. Those teaks are basically implementing how aggressive the policy should be enforced, and sometimes use alternate implementations of the speed changing itself, to improve perceived UI performance on that hardware with that GUI on top of it.
In general, they try to allow high-CPU/GPU bursts, so long as the device doesn't stay at 100%, because then the phone might overheat, or just eat battery too quickly. FI, if you need 100% CPU and then GPU at the max power state to render a webpage, fine. It'll be over quickly, and then can slow back down for a second or two. They need to keep the average reasonable.
* If you want your phone to
really underperform, change the governor for core 0, and then forget to change it for any other cores!
