Best practices for energy efficient software
From Green software
(Difference between revisions)
(New page: Based on sources from literature and the industry, 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-cod...) |
|||
Line 27: | Line 27: | ||
# [[Reduce transparency|Reduce transparency/abstractions]] | # [[Reduce transparency|Reduce transparency/abstractions]] | ||
# [[Reduce transparency|Optimize for underlying layers]] | # [[Reduce transparency|Optimize for underlying layers]] | ||
- | # [[Use proxies|Use a proxy to maintain network presence | + | # [[Use proxies|Use a proxy to maintain network presence] |
# [[Compiler optimization|Compiler optimization*]] | # [[Compiler optimization|Compiler optimization*]] | ||
# [[Parametrize|Reduce QoS dynamically]] | # [[Parametrize|Reduce QoS dynamically]] | ||
# [[Keep 3rd party software up-to-date]] | # [[Keep 3rd party software up-to-date]] | ||
# [[Free or unmap unneeded memory]] | # [[Free or unmap unneeded memory]] | ||
- | # [[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]] |
- | # [[Use optimized compiler|Use optimized compiler | + | # [[Use optimized compiler|Use optimized compiler]] |
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 21:52, 8 September 2010
Based on sources from literature and the industry, 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
- [[Use proxies|Use a proxy to maintain network presence]
- Compiler optimization*
- Reduce QoS dynamically
- Keep 3rd party software up-to-date
- Free or unmap unneeded memory
- Use asynchronous I/O
- Make use of high performance libraries
- Use optimized compiler
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.