Application Performance Factors

   

Application performance is affected by several important factors, including:

Workload Growth

There are several important kinds of workload growth that affect application performance as shown in the following list.

The workload your application experiences over time is generally predictable. Once your application is up and running and establishes some baseline performance statistics, you can identify workload growth trends and patterns using various performance analysis tools (such as the Windows NT Performance Monitor).

For More Information   For more information on how to monitor workload growth, see Using Performance Monitor in this chapter.

Hardware Resource Consumption

A growing workload affects your application's performance by directly increasing hardware resource consumption. For example, if you now have twice as many users, you probably also have twice as many database accesses and related network traffic. Ultimately, the performance potential for your application is largely constrained by the available hardware. It does little good to optimize your application if the hardware infrastructure is slow and inadequate.

The hardware factors affecting performance include:

In a typical enterprise environment, the hardware available to your application is only occasionally upgraded. For most of your application's lifecycle, it will run in the same hardware environment. You should periodically monitor hardware resource consumption to ensure the current and future application performance you expect.

For More Information   For more information on hardware resource consumption and how to fix it, see Balancing Hardware Resources in this chapter.

Architectural Design Strategies

Your enterprise application's performance is also affected by certain design strategies and implementation choices. These architectural options include:

The foundation of a high-performance application always includes good logical packaging. Logical packaging is the process of grouping related application services into common components. Another important design strategy is to physically deploy the components on the network for optimum efficiency. Deciding how to group logical services and choosing the best physical deployment is not easy, but you can use Application Performance Explorer (APE) to realistically model your proposed application architecture. APE can help you understand the consequences of your design choices and help you find the optimum architectural model.

For More Information   For more information on the fundamental issues of logical and physical design, see Creating the Application Architecture in Chapter 3 of this book. For more information on modeling distributed component architectures, see Application Performance Explorer Concepts, available online in MSDN Library Visual Studio 6.0.

Efficient component instancing and reuse is a very important part of a high-performance application. Basically, there are two important strategies for fast, reliable, and scalable object reuse: service queuing and object pooling. With service queuing, the queue manager releases work so that the server computer is efficiently busy (but not too busy). With object pooling, certain object instances (such as connections) are quickly recycled (as opposed to dropped and reinstantiated), thereby providing very fast service.

As an example of the importance of scalability, consider that in high transaction environments, some servers may become CPU-bound. Without the scalability offered by service queuing and object pooling, there is little alternative but to enhance the throughput by using additional processors and more RAM.

For More Information   For more information on important design strategies for distributed applications and a discussion of service queuing and object pooling, see Designing High-Performance Applications in this chapter.

Optimized Database Access

Database access often imposes the largest performance penalty on your application.  This is especially a concern with distributed applications, where multiple clients simultaneously access common tables and rows.

While choosing the right data access technology (such as OLE DB with ADO) solves an important part of your high-performance requirement, the reality is that most of your application's database access speed will come from careful modeling of the data structures, query optimization, and careful handling of multiuser concurrency situations.

For More Information   For more information on how to increase the speed of your application's data access, see Optimizing Database Retrieval in this chapter. For more information on defining your application's data characteristics and processes, see Designing Enterprise Data in Chapter 4 of this book.