My new MacBook Pro Retina was getting terrible battery life. Less than 2h on full charge! I was extremely disappointed, given I could get about 4h on my last MacBook Pro. Fear not however, it was all in the software.
Here’s how I fixed it:
Firstly, if you did a migration from an old mac (as I did), there appears to be a shocking bug that sucks battery life like you wouldn’t believe. Fortunately the fix is easy.
In Terminal (bash), simply run:
cd ~/Library/Preferences/ rm com.apple.desktop.plist killall Dock
You could move the plist instead of deleting it if you were worried.
After doing this, my background which had been a gray colour was restored to the Lion default. And my battery life shot up from 1:50 remaining to over 6h. Wow!! I was skeptical about this fix, but it seriously works.
Secondly, and this is something you will want to use for the life of the MacBook, is to note that the descrete video card, while being totally awesome, is a much bigger drain on the battery than the intergrated one. Your Mac will switch between intergrated and descrete graphics as needed to optimise your performace and battery life. However: some poorly written apps may put your Mac into descrete graphics mode unnessesarly, plus you may wish to say always use the intergrated one while on battery, even if that affects your graphics performacne (for me this is the case: nothing trumps battery life). For all these things you need gfxCardStatus. This wonderful utility will tell you which graphics card is being used (remember: integrated == long battery, discrete == short battery), which apps forced the discrete mode to be used. You can also force which graphics card to use, and best of all: if you go to preferences, you can make it so that the discrete graphics card will never be used while you’re on battery. If you care about battery life more than graphics: this is the option for you.
With both these things, I’m now seeing over 6h of battery life on the MacBook Pro Retina, which is awesome!
Also, check your software updates as it looks like Apple is fixing some power issues: