Optimization (computer science)

In computing, optimization is the process of modifying a system to make some features of it work more efficiently or use fewer resources.  For instance, a computer program may be optimized so that it runs faster, or to run with less memory requirements or other resources (see Space-time tradeoff), or to consume less energy. This is a branch of software engineering.

The optimization can have sense at different levels, from the lowest (development of circuits, writing of machine code designed especially for the architecture) up to the highest levels of making of implementation, use or design of algorithms.

The optimization is generally recommended to leave until the end of the process of development, since the premature optimization can introduce new errors (generally more difficult to detect for being of algorithmic nature).

The optimized system may be a single computer program, a collection of computers or even an entire network such as the Internet. 

 Emerging Trends 

 Optimization for AI and Machine Learning
 Quantum Optimization
 Multi-objective Optimization

References

Other websites
 Programming Optimization
 C,C++ optimization
 C optimization tutorial 
 Software Optimization at Link-time And Run-time 
 Article "A Plea for Lean Software" by Niklaus Wirth
 Description from the Portland Pattern Repository
 Performance tuning of Computer Networks
 An article describing high-level optimization
 Some examples of optimization problems & algorithms 

Category:Computer science