Overview
Performance Tuning and Characterization is the process of identifying bottlenecks in the execution of an application and interpreting the results. These bottlenecks are the cause of slowing response times to unacceptable levels. Tuning is the process of evaluating the potential of modifying the application or its run time environment to improve performance.
This service delivers identification of problem areas (characterization), identification of potential repairs to improve performance (fix identification), and the implementation and measurement of potential repairs.
Sub domains of performance tuning include:
- Improving overall performance or specific features in a single application.
- Improving client web site code performance.
- Improving compile time (not execution time) performance in C / C++ Applications.
Sub-Categorization
- Identify and Benchmark Performance (Characterization)
- Identify Excessive Method / Function Call Invocation.
- Identify Inefficient Data Allocation.
- Identify Unnecessary Computation or Computations Occur at an Inefficient Location / Time.
- Interpretation of Cause -- Business Effective Solution Identification (Fix identification).
Objectives
Identification Activities
Three aspects of service are identification activities focused on the customer's software:
- Excessive Method / Function Call Invocation
Function calls can be expensive because of the time required to establish a program function call stack frame or because of the frequency of a particular function call. Frequently the number of times a routine is called is not driven by a 'reasoned' requirement but due to an unaware programmer implementation. Elements within this aspect include the reduction in number of calls, simplification of call allocation (local variable requirements and parameter expense) and movement of a call to a more efficient call site.
- Inefficient Data Allocation
Data structures need to be allocated during a program execution sequence. Several classes of problems affecting performance are considered in this aspect. Examples of inline templates may be small amounts of text inserted by a programmer but cost (performance) many orders of magnitude larger in impact than other comparative allocation statements. Other examples include allocating large / complex data structures in code locations where they are more frequently invoked than necessary. Unnecessary parameters or constructors invoked in loops are examples of consideration.
- Unnecessary Computation or Computations Occur at an Inefficient Location / Time
Some programs that intermedia/te data may be calculated over and over again due to the lack of performance awareness in programmer software development. It is common for calculations that were only necessary for special cases to be in the main line of computation affecting all 'normal' executions adversely. Simple factoring of behavior into 'normal / simple' cases and 'special' case will significantly influence performance of an application.
Interpret Cause
Changes proposed are frequently constrained due to the short time window before scheduled release date. These constraints have led to any performance recommendations needing to be the following: a) simple changes to minimize risks inherent in late stage code changes and b) small in scope as the degree of complexity implementing the change. proServices provides interpretation support with a focus on identifying feasible change based on this kind of criteria.
Deliver Analysis
Produce and deliver a report of the results of performance problems identified, and the conclusions drawn from the interpretation of cause analysis on the development process.
Deliverables
A report that includes:
- Identification of locations in the software indicated by profiling techniques as performance problems.
- Interpretation of the:
- Cause analysis indicating problems, with recommendations to improve efficiency / performance of an application.
- Software process implications of defects identified.
Customer Profiles
- Customers releasing a product on a critical path, which affords minimal cycle time for a thorough performance tuning activity.
- Customers needing a scheduled interval based performance tuning characterization service, which evaluates the performance changes in their system on a frequent basis.
Service Options Available For Performance Tuning
- e-Factory: Remote acccess to customer site to perform this service.
- Factory: Perform this service in proServices' Trenton, NJ Factory.(not available)
- On-Site: Perform this service at the customer's site.(not available)
Service Qualifications
- Service is offered for the following programming languages: C, C++, Java, Korn shell, C-shell, HTML, CGI and Perl.
- Compile time performance improvements are only available for C / C++ languages.
- Must provide known test cases to fully exercise application. proServices will develop test case support under a testing contract.