Targets of optimizing
- academic optimizing
It is understood that in many cases you can speed up your program with addition code. E.g. instead of coding a function you can have a precalculated lookup table giving you the results immediately. (The Pentium divide operation does it like this)
- improve readability
- enable reusability
- commercial optimizing
- Saving human resources and development time.
The better product will have no chance on the market when the demand is satisfied by a worse one which can be developed much faster and shipped much earlier.
- Reducing hardware components
In general it is more easy to copy software rather than hardware.
So, if you can implement something in software instead of conventional hardware you can reduce the costs dramatically.
With the first home computers Sinclair ZX80/81, there was no video processor; the Zilog Z80 processor was programmed to do that job whenever there was no other job to be done.
In most notebooks you will find a software modem. All the tasks done by a conventional modem are implemented in software and performed by the main processor. That is why you need to install drivers to enable the modem.