The main requirement, which generally apply to method of optimization - optimized application should have the same results and side effects on same set of input data as unoptimized one. However, this requirement may not have a special role, if the gain through the use of optimization might be considered more important than effects of changes in behavior of the program.
When manually optimizing code, there is another problem: the need to know not only how to optimize but also in any place to apply it. Typically, due to various factors (slow input operation, difference in speed of operation of human operator and machine, etc.), only 10% of the code occupy as much as 90% of execution time. So how to optimize the need to spend extra time so instead of trying to optimize entire program it would be better to proceed with optimization of these "critical" by the time of implementation of 10%. This piece of code called a bottleneck and to define it special programs, called profilers, are used. This allows to measure the time of the various parts of program.
Our experts possess all necessary knowledge and skills that used to identify all bottlenecks and to optimize the code qualitatively, fast and, what is most importantly, to the extent necessary.