[One (M7) Original Android Development] Giblet-dono:
A CPU and GPU do a lot of calculations, the amount of calculations it can do is dependant on the frequency of the CPU/GPU

(You see frequency = how frequent can you do a calculation)

Now the higher the frequency the more power it will need.

So they came up with a "gear" system.

Like in your car, it has a few frequencies it can use for different tasks:

If you want to drive very fast you use a higher gear <-> If you want to use your GPU/CPU intensively (say you are gaming) you use a higher frequency.

If you want to drive very slow you use a lower gear <-> if you don't want to use your CPU/GPU intensively (say you are texting) you use a lower frequency.

In the car you would save gas, in your device you save power!

Now in a car the gear change can be operated manually, or it can be automatic, the automatic will actually measure your speed, your RPM and decide for you, which gear you need.

And that's exactly how a governor on a phone works.

The governor checks which frequency you need and automatically sets it higher if needed, or lower if not needed.

Now there is one more thing, you can change on your phone which you can't do in a car, in a phone you can actually change your power intake.

This is called changing the voltage (undervolting/overvolting)

The manufacturers make a list with all frequencies and link every frequency to a voltage.

They always choose a "safe" voltage, this means that every chip they produce can handle THAT frequency with THAT voltage.

But not all chips are created equal, some can handle the same frequency with a (much) lower voltage! thus saving extra power.

To recap:

You have frequencies, which are actually how fast the CPU/GPU runs

You have governors, which "govern" between these frequencies, depending on the current usage

You have voltage, which is actually the power going to the CPU/GPU

Now, how to save power?!

I hope you can see that the lower the frequency, the les power it consumes.

and the less voltage a fequency get's assigned, the les power it uses.

A governor can also help you, for instance a powersaver governor will wait untill the device is heavily used for 30 seconds before ramping up the frequency, a performance governor will ramp up the frequency as soon as the screen is turned on.

I use setcpu with a few "profiles" to regulate my power usage.

For instance when I text, I don't need the full 2214Mhz (overclocked)

So I made a profile, which says: When I am using the message app, use the Governor: ondemand, and the frequency can go between 384 - 1566 Mhz

But when I'm gaming, I will need all the extra power I can get: Governor MSM-dvcs, frequency 384-2214

In this same fashion I have profiled the apps I use most, and this gives me a very good battery life.

Apart from this I also chose to undervolt my CPU to 725mv

Now there are some more mechanics at work here.

For instance when your phone screen is off, it will still run it's cpu at a low frequency, but some apps keep it "awake"

You can use the xposed module greenify to make sure these apps don't keep your phone awake and thus save battery.

Now, you can try all this by yourself, but DON'T FORGET, make a nandroid backup first!!

If you undervolt to low, or overclock to high, your device might not be able to boot, just restore your nandroid and it should work.