Mobile platforms need power-conserving applications: optimizing applications for extended battery life
Applications can be designed to conserve power on mobile computers, giving users longer battery life.

by Eric L. Palmer, Intel Corp.

Applications can be designed to conserve power on mobile computers, giving users longer battery life. This article provides an overview of optimizing applications for extended battery life. It also highlights some of the APIs provided by Windows XP* that are used to measure power consumption to assist with these optimizations. The BatteryMan sample application uses the APIs described to measure power, and usage instructions with results from an example test case are provided.

In general, the more stress an application places on a mobile computer system's devices (processor, hard drive, CD/DVD drive, and other devices), the more power it causes the system to consume per unit of time, and the faster it causes the battery to drain. To extend the battery life, an application needs to either use the devices less or use them more efficiently. Below are suggestions for using the processor and disk drives more efficiently.

Start with the processor
The processor is often the first and best place to look to start saving power. If an application has a certain amount of work to do, it can save power by doing the work faster.

This means optimizing the application for performance, which starts with having efficient algorithms and then improving them using Intel® software development tools such as the Intel VTune™ Performance Analyzers, the Intel Compilers, and Intel Performance Libraries.

Performance can also be improved by taking advantage of instruction sets such as SSE/SSE2. Some specific suggestions for saving power consumed by the processor follow:

  • Applications should avoid spin-wait loops that wait for more than a few milliseconds. Instead, use Windows threading APIs such as WaitForSingleObject(). This allows the processor to go into lower-power states while waiting for the synchronization object.
  • A common design pitfall in Windows applications is using PeekMessage() in a loop to wait for a message. Applications should instead use WaitMessage() to suspend the thread until a message is in the queue.
  • If an application performs background tasks that do not need to be processed at specific time intervals, queue the tasks to reduce the frequency of task processing. This allows the processor to remain in lower-power states longer between task processing, which saves power.

If you're interested in this topic, these articles may be helpful:

Bluetooth boogies, part 1: file transfer with JSR-82 & OBEX - learn to use JSR-82 & OBEX to transfer files from client to server
by Bruce Hopkins, technical architect, Gestalt LLC. First published by...
Discovering mobilized software: supporting the Mobilized Software Initiative
from Intel Corp. What is the problem? Computer users are increasin...
The art of graceful application suspension
by Lynn Merrill. Intel Corp. Does this sound familiar? You're worki...
Optimize Terminal and Hub Operations With the Hands-Free WT4000 Series Wearable System
Protecting profitability and growing customer demands In the highly...
Intel optimization best practices: no magic, just discipline and good tools
by Andrew Binstock, principal analyst, Pacific Data Works LLC. Intel C...

Related Jobs:

Program Manager #136661 - WA - Redmond - Microsoft Corporation
Do you enjoy implementing leading-edge technologies with customers? Ar...
Lead Software Development Engineer #146662 - WA - Redmond - Microsoft Corporation
Come join the OCA team in building one of the most important feedback ...
Product Manager #143448 - WA - Redmond - Microsoft Corporation
The Licensing Technologies and Analytics team is looking for a strong ...
Senior Systems Engineer - CA - Fremont - Volterra
Responsible for analyzing and designing power supply systems as well a...
Support Engineer #254151 - WA - Seattle - Qpass
SUMMARY: Your primary responsibilities will be to investigate and tr...
Staff R&D Engineer #3931 - CA - Sunnyvale - Synopsys, Inc
The candidate will work with the Physical Design R&D team to implement...
Calibration Systems Engineer - CDMA1X - CA ? San Diego - Texas Instruments Incorporated
Don’t let this position pass you by! We’ll give you the ch...
Program Manager #146029 - WA - Redmond - Microsoft Corporation
Come work on one of the hottest and most innovative teams within MSN, ...
Lead Software Development Engineer #143066 - WA - Redmond - Microsoft Corporation
Come join the OCA team in building one of the most important feedback ...
Staff R&D Engineer #3673 - CA - Sunnyvale - Synopsys, Inc
The candidate will work in the Physical Design R&D team to implement c...