Best practices for energy efficient software
From Green software
(Difference between revisions)
Line 34: | Line 34: | ||
# [[Use asynchronous I/O|Use asynchronous I/O]] | # [[Use asynchronous I/O|Use asynchronous I/O]] | ||
# [[Make use of high performance libraries|Make use of high performance libraries]] | # [[Make use of high performance libraries|Make use of high performance libraries]] | ||
- | |||
# [[Software-hardware interaction optimizations]] | # [[Software-hardware interaction optimizations]] | ||
The previous list contains techniques that can be applied during software development, that can improve energy efficiency. Some of the best practices are only useful in highly specific cases, to an extent that they are not realistic to most software developers. For this purpose lists are conducted showing per list a set of [[platform-specific best practices|best practices that are useful for a specific platform]]. | The previous list contains techniques that can be applied during software development, that can improve energy efficiency. Some of the best practices are only useful in highly specific cases, to an extent that they are not realistic to most software developers. For this purpose lists are conducted showing per list a set of [[platform-specific best practices|best practices that are useful for a specific platform]]. |
Revision as of 13:00, 16 September 2010
Based on sources from literature and the industry, in Energy efficient software a set of best practices has been devised. Best practices that are applicable to source code only can be found on the page on source-code best practices. Generic best practices can be found in the following list:
- Lazy loading
- Efficient datatraffic
- Decrease algorithmic complexity
- Power down peripherals
- Efficient UI
- Static GUI
- Use efficient queries
- Load balancing
- Avoid polling
- Avoid use of byte-code
- Make proper use of virtualization
- Lower the clock frequency
- Use low level programming
- Use assembly for frequently executed code sequences
- Use JIT Compiler
- Use specific-purpose hardware
- Put application to sleep
- Code Migration (agents)
- Batch IO
- Optimal use peripherals
- Less frequent polling
- Use flexible timers
- Reduce data redundancy
- Properly handle external signals and events
- Reduce transparency/abstractions
- Optimize for underlying layers
- Compiler optimization
- Reduce QoS dynamically
- Keep 3rd party software up-to-date
- Free or unmap unneeded memory
- Reduce memory leaks
- Use asynchronous I/O
- Make use of high performance libraries
- Software-hardware interaction optimizations
The previous list contains techniques that can be applied during software development, that can improve energy efficiency. Some of the best practices are only useful in highly specific cases, to an extent that they are not realistic to most software developers. For this purpose lists are conducted showing per list a set of best practices that are useful for a specific platform.