To reduce battery power demand, OnePlus phones are, without user permission, prohibiting hundreds of apps from running on the faster CPU cores.
The result is that many apps run up to 75% slower than expected.
But everyone—OnePlus included—seems to agree that OnePlus is taking control of app performance out of the hands of users and deciding what is and isn’t allowed to run at maximum speed on the user’s device.
Source: OnePlus admits to throttling 300 popular apps with recent update | Ars Technica
As noted, OnePlus effectively lowered performance of their phones via software updates AFTER the initial releases gave them good performance reviews.
Longer battery life is made possible by just a few functions:
Batteries with higher capacity
Reducing power of the device
Power can be reduced by disabling unneeded hardware, and reducing the speed of the CPU, when possible. Multi-core phones today also include both fast and slower cores – by moving apps, where possible, to a slower core, more power intensive cores can be throttled or powered off.
One of my patents is in the power management area (involving app level network protocols to reduce power demand). My thesis for my Master’s in software engineering is about the impacts of software algorithm design decisions on power management. The traditional view is the fastest algorithm uses the least amount of power – but that turns out not to be true. Ultimately, some algorithm choices use hardware features that increase power demand – and a seemingly less efficient algorithm can be more effective at reducing power without significantly impacting performance.
Because apps are compiled into byte codes, which in turn may be converted through Just-In-Time compilation into machine instructions – and there are different implementations of byte code interpreters and JIT – there may be variation across devices. Thus, there is no obvious way to predict how one algorithm may perform across different devices, which complicates the selection of algorithms from a power perspective. About all you can do is to measure actual power consumption on a device while the test app is running to determine real world power demand and effects of design choices.