Performance Checklist

Performance Checklist:

patterns & practices Library

Design Considerations

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Consider security and performance.
Ff647706.checkbox(en-us,PandP.10).gif Partition your application logically.
Ff647706.checkbox(en-us,PandP.10).gif Evaluate affinity.
Ff647706.checkbox(en-us,PandP.10).gif Reduce round trips.
Ff647706.checkbox(en-us,PandP.10).gif Avoid blocking on long-running tasks.
Ff647706.checkbox(en-us,PandP.10).gif Use caching.
Ff647706.checkbox(en-us,PandP.10).gif Avoid unnecessary exceptions.

Threading

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Tune the thread pool by using the formula to reduce contention.
Ff647706.checkbox(en-us,PandP.10).gif Consider minIoThreads and minWorkerThreads for burst load.
Ff647706.checkbox(en-us,PandP.10).gif Do not create threads on a per-request basis.
Ff647706.checkbox(en-us,PandP.10).gif Avoid blocking threads.
Ff647706.checkbox(en-us,PandP.10).gif Avoid asynchronous calls unless you have additional parallel work.

Resource Management

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Pool resources.
Ff647706.checkbox(en-us,PandP.10).gif Explicitly call Close or Dispose on resources you open.
Ff647706.checkbox(en-us,PandP.10).gif Do not cache or block on pooled resources.
Ff647706.checkbox(en-us,PandP.10).gif Know your application allocation pattern.
Ff647706.checkbox(en-us,PandP.10).gif Obtain resources late and release them early.
Ff647706.checkbox(en-us,PandP.10).gif Avoid per-request impersonation.

Pages

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Trim your page size.
Ff647706.checkbox(en-us,PandP.10).gif Enable buffering.
Ff647706.checkbox(en-us,PandP.10).gif Use Page.IsPostBack to minimize redundant processing.
Ff647706.checkbox(en-us,PandP.10).gif Partition page content to improve caching efficiency and reduce rendering.
Ff647706.checkbox(en-us,PandP.10).gif Ensure pages are batch compiled.
Ff647706.checkbox(en-us,PandP.10).gif Ensure debug is set to false.
Ff647706.checkbox(en-us,PandP.10).gif Optimize expensive loops.
Ff647706.checkbox(en-us,PandP.10).gif Consider using Server.Transfer instead of Response.Redirect.
Ff647706.checkbox(en-us,PandP.10).gif Use client-side validation.

Server Controls

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Identify the use of view state in your server controls.
Ff647706.checkbox(en-us,PandP.10).gif Use server controls where appropriate.
Ff647706.checkbox(en-us,PandP.10).gif Avoid creating deep hierarchies of controls.

Data Binding

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Avoid using Page.DataBind.
Ff647706.checkbox(en-us,PandP.10).gif Minimize calls to DataBinder.Eval.

Caching

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Separate dynamic data from static data in your pages.
Ff647706.checkbox(en-us,PandP.10).gif Configure the memory limit.
Ff647706.checkbox(en-us,PandP.10).gif Cache the right data.
Ff647706.checkbox(en-us,PandP.10).gif Refresh your cache appropriately.
Ff647706.checkbox(en-us,PandP.10).gif Cache the appropriate form of data.
Ff647706.checkbox(en-us,PandP.10).gif Use output caching to cache relatively static pages.
Ff647706.checkbox(en-us,PandP.10).gif Choose the right cache location.
Ff647706.checkbox(en-us,PandP.10).gif Use VaryBy attributes for selective caching.
Ff647706.checkbox(en-us,PandP.10).gif Use kernel caching on Microsoft® Windows Server™ 2003.

State Management

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Store simple state on the client where possible.
Ff647706.checkbox(en-us,PandP.10).gif Consider serialization costs.

Application State

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Use static properties instead of the Application object to store application state.
Ff647706.checkbox(en-us,PandP.10).gif Use application state to share static, read-only data.
Ff647706.checkbox(en-us,PandP.10).gif Do not store single-threaded apartment (STA) COM objects in application state.

Session State

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Prefer basic types to reduce serialization costs.
Ff647706.checkbox(en-us,PandP.10).gif Disable session state if you do not use it.
Ff647706.checkbox(en-us,PandP.10).gif Avoid storing STA COM objects in session state.
Ff647706.checkbox(en-us,PandP.10).gif Use the ReadOnly attribute when you can.

View State

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Disable view state if you do not need it.
Ff647706.checkbox(en-us,PandP.10).gif Minimize the number of objects you store in view state.
Ff647706.checkbox(en-us,PandP.10).gif Determine the size of your view state.

HTTP Modules

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Avoid long-running and blocking calls in pipeline code.
Ff647706.checkbox(en-us,PandP.10).gif Consider asynchronous events.

String Management

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Use Response.Write for formatting output.
Ff647706.checkbox(en-us,PandP.10).gif Use StringBuilder for temporary buffers.
Ff647706.checkbox(en-us,PandP.10).gif Use HtmlTextWriter when building custom controls.

Exception Management

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Implement a Global.asax error handler.
Ff647706.checkbox(en-us,PandP.10).gif Monitor application exceptions.
Ff647706.checkbox(en-us,PandP.10).gif Use try/finally on disposable resources.
Ff647706.checkbox(en-us,PandP.10).gif Write code that avoids exceptions.
Ff647706.checkbox(en-us,PandP.10).gif Set timeouts aggressively.

COM Interop

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Use ASPCOMPAT to call STA COM objects.
Ff647706.checkbox(en-us,PandP.10).gif Avoid storing COM objects in session state or application state.
Ff647706.checkbox(en-us,PandP.10).gif Avoid storing STA components in session state.
Ff647706.checkbox(en-us,PandP.10).gif Do not create STA components in a page constructor.
Ff647706.checkbox(en-us,PandP.10).gif Supplement classic ASP Server.CreateObject with early binding.

Data Access

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Use paging for large result sets.
Ff647706.checkbox(en-us,PandP.10).gif Use a DataReader for fast and efficient data binding.
Ff647706.checkbox(en-us,PandP.10).gif Prevent users from requesting too much data.
Ff647706.checkbox(en-us,PandP.10).gif Consider caching data.

Security Considerations

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Constrain unwanted Web server traffic.
Ff647706.checkbox(en-us,PandP.10).gif Turn off authentication for anonymous access.
Ff647706.checkbox(en-us,PandP.10).gif Validate user input on the client.
Ff647706.checkbox(en-us,PandP.10).gif Avoid per-request impersonation.
Ff647706.checkbox(en-us,PandP.10).gif Avoid caching sensitive data.
Ff647706.checkbox(en-us,PandP.10).gif Segregate secure and non-secure content.
Ff647706.checkbox(en-us,PandP.10).gif Only use Secure Sockets Layer (SSL) for pages that require it.
Ff647706.checkbox(en-us,PandP.10).gif Use absolute URLs for navigation.
Ff647706.checkbox(en-us,PandP.10).gif Consider using SSL hardware to offload SSL processing.
Ff647706.checkbox(en-us,PandP.10).gif Tune SSL timeout to avoid SSL session expiration.

Deployment Considerations

CheckDescription
Ff647706.checkbox(en-us,PandP.10).gif Avoid unnecessary process hops.
Ff647706.checkbox(en-us,PandP.10).gif Understand the performance implications of a remote middle tier.
Ff647706.checkbox(en-us,PandP.10).gif Short-circuit the HTTP pipeline.
Ff647706.checkbox(en-us,PandP.10).gif Configure the memory limit.
Ff647706.checkbox(en-us,PandP.10).gif Disable tracing and debugging.
Ff647706.checkbox(en-us,PandP.10).gif Ensure content updates do not cause additional assemblies to be loaded.
Ff647706.checkbox(en-us,PandP.10).gif Avoid XCOPY under heavy load.
Ff647706.checkbox(en-us,PandP.10).gif Consider precompiling pages.
Ff647706.checkbox(en-us,PandP.10).gif Consider Web garden configuration.
Ff647706.checkbox(en-us,PandP.10).gif Consider using HTTP compression.
Ff647706.checkbox(en-us,PandP.10).gif Consider using perimeter caching.

Gathered from: http://msdn.microsoft.com/en-us/library/ms998596

Home Page: http://msdn.microsoft.com/en-us/library/ff649152