DEV411 ASP.NET: Best Practices For Performance Stephen Walther
Purpose of Talk What is the fastest method of displaying a set of database records in an ASP.NET Page?
Testing Tools Trace Tools Profiler Tools Load Tools
Trace Tools ASP.NET Page or Application Tracing Display trace information on page System.Diagnostics Tracing Write trace information to custom listener
Trace Tools
Profiler Tools CLR Profiler Free Profiler from Microsoft ANTS Profiler Available at SQL Profiler Included with Microsoft SQL Server
ANTS Profiler
Load Tools Application Center Test Included with Visual Studio.NET Enterprise Web Application Stress Tool (WAST) Free download from Microsoft site ANTS Load Available at Includes calculated Frustration Coefficient
Test Setup Application Center Test (ACT).NET Framework 1.1 SQL Server 2000 Windows Server 2003 (Standard)
Performance Statistics Requests Per Second (RPS) Time To Last Byte (TTLB) Page Execution Time
Timer Module The Timer Module records the time interval between PreRequestHandlerExecute Event PostRequestHandlerExecute Event
Timer Module PostRequestEventHandlerExecute EndRequest Load Init Unload TimerModule.cs PreRequestEventHandlerExecute BeginRequest Application Events Page Events
Clock Resolution QueryPerformanceCounter is accurate to 1/ of a second or about a millionth of a second
The Test Request page 1050 times Discard first 50 requests Log time of each request Average results
Database Setup Four Database Tables Products10 – 10 Rows Products50 – 50 Rows Products100 – 100 Rows Products500 – 500 Rows
Whats Faster? DataReaderDataSet DisplayDataReader.aspx DisplayDataSet.aspx
DataReader
DataSet
DataReader Versus DataSet
DataReader Versus DataSet Final Results On average, a DataReader is 16% faster than DataSet
3rd Option – ArrayList Using an ArrayList instead of a DataReader results in similar performance with the advantages of a static representation of data DisplayArrayList.aspx
ArrayList
Whats Faster? SqlDataReaderOleDbDataReader
OleDbDataReader
OleDbDataReader Final Results On average, a SqlDataReader is 115% faster than an OleDbDataReader
Whats Faster? Inline SQL Stored Procedure
Whats Faster? DataReader Column Reference By Name: Response.Write(dr[ProductName]); By Ordinal: Response.Write(dr[0]); By GetString(): Response.Write(dr.GetString(0));
Column Reference
Column Reference Final Results On average, ordinal reference is 11% faster than by name
Whats Faster? Proper Case dr[ProductName] Improper Case dr[PRODUCTNAME]
Proper Case
Proper Case Final Results Using proper column case is 1% faster than improper column case
Whats Faster? Inline ASP.NET Controls
DataGrid
DataGrid Final Results Inline script is 233% faster than a DataGrid
Whats Faster? DataGrid with ViewState Disabled DataGrid with ViewState Enabled
ViewState
ViewState Final Results DataGrid with ViewState disabled is 66% faster than DataGrid with ViewState enabled
Whats Faster? AutoGenerateColumns Template Columns
Template Columns Final Results A DataGrid without templates is 39% faster than a DataGrid with templates
Whats Faster? How to improve template performance? DataBinder.Eval Explicit Cast ItemDataBound void ItemDataBound(Object s, DataGridItemEventArgs e) DisplayItemDataBound.aspx
Template Performance
Template Performance Final Results Explicit cast is 11% faster than using a databinding expression
Creating A Custom Control Would a custom DataGrid (with severely reduced functionality) be faster than the standard DataGrid? FastGrid.cs
Custom Control
Custom Control Final Results FastGrid is 37% faster than a standard DataGrid
Whats Faster? DataGrid with no caching DataGrid with data caching DataGrid with output caching
Data Caching
Data Cache Final Results Using the data cache is 637% faster than a standard DataGrid
Output Cache
Output Cache Final Results Using the output cache is infinitely faster than using a standard DataGrid
Conclusions A DataReader is faster than a DataSet An inline DataReader is faster than a DataGrid You pay a high price for ViewState AutoGenerateColumns is faster than template columns Caching is always a good idea!
Performance Resources Microsoft Sites Performancehttp://msdn.microsoft.com/netframework/using/understanding/perf/default.aspxBooks Improving.NET Application Performance and Scalability Web Application Stress Tool CLR Profiler beebdda&displaylang=en ANTS Profiler and ANTS Load
Q1:Overall satisfaction with the session Q2:Usefulness of the information Q3:Presenters knowledge of the subject Q4:Presenters presentation skills Q5:Effectiveness of the presentation Please fill out a session evaluation on CommNet