The process of creation of a software application is not an easy job or a small process. It is a very long and carefully carried out work-cycle. There are several steps which one needs to be careful of while the creation phase and when the software is created, the optimization phase comes into picture where the constructed software is checked whether it is optimally using memory, time, power and other such critical resources. So go ahead and catch the basics of Optimization.
Ever since software industry developed and the process of creation of software got redefined, more and more emphasis was laid on the optimization phase. This was done because day after day computers got more and more heavy in terms of configurations following the demand of heavier and heavier software applications to be developed. Now, when we are talking about those applications which occupy considerable system’s resources we need to make sure that they use as less resources as possible so that we have resources spared for other programs to execute simultaneously. Also we need to make sure that it uses as little time as possible in executing because time is also a parameter in the process of optimization which needs to be taken care of.
Now optimization can be done at various levels of software creation process or at various places within a software program. For example at design level, when you are going for the main structure of the program and you have to implement it with some sort of an algorithm then it is advisable to use the most efficient algorithm or the algorithm which best suites your requirements which in turn can yield maximum results. Thus this is optimization at design level. Then we can optimize at source code level by optimizing the logical sequences and loop constructs, then there is compile time optimization by using appropriate compilers and talking more advanced we can also optimize at assembly level.
Talking in general terms about optimization of a software program, the Pareto Principle holds perfectly true, that 80% of the problems can be avoided by tweaking or optimizing 20% of the problems. This principle was established for general life but it holds strong grounds in software optimization field. All you need to do is just make a list of areas and places where you can optimize your program and then arrange them in the descending order of priority and importance. Now if you optimize 20% of the problems from the top of that list your program will give way better results and you would feel that 80% of your problems are solved.
There are various types of optimization techniques available today. In fact there are also automated optimization techniques like Compiler Optimization which optimizes the code on its own according to the predefined set of parameters. But they are subjected to a limitation of their optimization criteria. So if you are employing any automated techniques for tweaking your program make sure that you also optimize it manually by a method which is really suitable to your program.