While working on Improving .NET Application Performance and Scalability (Patterns & Practices), my team created the software performance frame. We used the performance frame to organize and prioritize software performance and scalability issues. We used this frame throughout the guide to organize our guidelines and checklists. We also used the performance frame to build evaluation criteria to help find key performance decisions that can have a large impact.
Categories
We found that we could organize the majority of our performance principles, patterns and practices using the following buckets:
Category | Key Considerations |
---|---|
Caching | Per user, application-wide, data volatility |
Communication | Transport mechanism, boundaries, remote interface design, round trips, serialization, bandwidth |
Coupling and Cohesion | Loose coupling, high cohesion among components and layers |
Concurrency | Transactions, locks, threading, queuing |
Data Access | Schema design; Paging; Hierarchies; Indexes; Amount of data; Round trips. |
Data Structures / Algorithms | Choice of algorithm, Arrays vs. collections |
Resource Management | Allocating, creating, destroying, pooling |
State Management | Per user, application-wide, persistence, location |
Threats Organized by the Performance Frame
With the performance frame, it’s easy to walk the categories and think of potential performance problems. Here’s a list of potential software performance problems, organized by the performance frame:
Category | Threats |
---|---|
Caching |
|
Communication |
|
Concurrency |
|
Coupling / Cohesion |
|
Data Access |
|
Data Structures / Algorithms |
|
Exception Management |
|
Resource Management |
|
State Management |
|
Vulnerabilities Organized by the Performance Frame
You can also use the performance frame to identify common mistakes that lead to the performance problems above. Here’s a list of common design mistakes we find in applications:
Category | Vulnerabilities |
---|---|
Caching |
|
Communication |
|
Concurrency |
|
Coupling / Cohesion |
|
Data Access |
|
Data Structures / Algorithms |
|
Exception Management |
|
Resource Management |
|
State Management |
|
Countermeasures Organized by the Performance Frame
Here’s a list of common design strategies that lead to better performance:
Category | Countermeasures |
---|---|
Caching |
|
Communication |
|
Concurrency |
|
Coupling / Cohesion |
|
Data Access |
|
Data Structures / Algorithms |
|
Exception Management |
|
Resource Management |
|
State Management |
|
[…] Performance Frame […]