 In software engineering, profiling ("program profiling", "software profiling") is a form of dynamic program analysis that measures, for example, the space (memory) or time complexity of a program, the usage of particular instructions, or frequency and duration of function calls.The most common use of profiling information is to aid program optimization.Profiling is achieved by instrumenting either the program source code or its binary executable form using a tool called a "profiler" (or "code profiler").