Sometimes referred to as profiling, performance analysis as it relates to software engineering is simply the process of evaluating how a particular software program is functioning. This process normally begins with how the program loads and what happens when each step in using the program is executed. The object of performance analysis is to ensure the software program is working at optimum efficiency and to identify and correct any issues that may negatively impact that efficiency.
Performance analysis also helps the engineer to adjust components in a manner that helps the program make the best use of available resources. By evaluating real time executions, it is possible to determine if something could be done to speed up a task, or change the amount of memory required to run the task without negatively impacting the overall function of the software. The final goal is a program that runs smoothly, quickly, and works each time any task is initiated.
Performance analysis is one type of dynamic program analysis, or DPA. DPA focuses on what happens when a program is actively running, including how resources are used and in what order. This is different from static code analysis, which tends to focus more on how the code is written and how logical the succession of commands happens to be. However, both types of analysis are common elements of evaluating and refining software and software functionality.
The history of program analysis goes back to the earliest years of computing. During the development of the first “electronic brains” of the 1940’s, various methods were put in place to test the efficiency of each function that a given system was capable of performing. As technology continued to advance, the methodology for evaluating the performance level of software running on various systems was refined and became somewhat standardized. Today, system architects and software program writers make use of program analysis to identify strengths and weaknesses inherent in a given release of a program, and create fixes for any issues. The data gathered by performance analysis helps to prevent those same issues from appearing in later releases of the program.
The actual process of performance analysis can still be accomplished by manual review during the active operation of a program, or be completed automatically by compiling data using an automated profiler. In both cases, information is captured that allows both a software writer or a system architect to determine what needs to be done in order for the program to work at peak efficiency on a given system or network. Performance analysis is not a task that is performed once and then considered done. It is not unusual for system administrators to run a performance analysis on a recurring basis, since updates to other programs as well as hardware changes could possibly impact the efficiency of the program undergoing the analysis.