Incomputing,optimization is the process of modifying a system to make some features of it work moreefficiently or use fewerresources. For instance, acomputer program may be optimized so that it runs faster, or to run with lessmemory requirements or other resources (seeSpace-time tradeoff), or to consume lessenergy. This is a branch ofsoftware engineering.
The optimization can have sense at different levels, from the lowest (development ofcircuits, writing of machine code designed especially for the architecture) up to the highest levels of making of implementation, use or design ofalgorithms.
The optimization is generally recommended to leave until the end of the process ofdevelopment, since the premature optimization can introduce new errors (generally more difficult to detect for being of algorithmic nature).
The optimized system may be a singlecomputer program, a collection ofcomputers or even an entire network such as theInternet.