DEV411 ASP.NET: Best Practices For Performance PowerPoint PPT Presentation

presentation player overlay
1 / 56
About This Presentation
Transcript and Presenter's Notes

Title: DEV411 ASP.NET: Best Practices For Performance


1
DEV411 ASP.NET Best Practices For Performance
  • Stephen Walther
  • www.SuperexpertTraining.com

2
Purpose of Talk
  • What is the fastest method of displaying a set
    of database records in an ASP.NET Page?

3
Testing Tools
  • Trace Tools
  • Profiler Tools
  • Load Tools

4
Trace Tools
  • ASP.NET Page or Application Tracing
  • Display trace information on page
  • System.Diagnostics Tracing
  • Write trace information tocustom listener

5
Trace Tools
6
Profiler Tools
  • CLR Profiler
  • Free Profiler from Microsoft
  • ANTS Profiler
  • Available at www.Red-Gate.com
  • SQL Profiler
  • Included with Microsoft SQL Server

7
ANTS Profiler
8
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 www.Red-Gate.com. Includes
    calculated Frustration Coefficient

9
Test Setup
  • Application Center Test (ACT)
  • .NET Framework 1.1
  • SQL Server 2000
  • Windows Server 2003 (Standard)

10
Performance Statistics
  • Requests Per Second (RPS)
  • Time To Last Byte (TTLB)
  • Page Execution Time

11
Timer Module
  • The Timer Module records the time interval
    between
  • PreRequestHandlerExecute Event
  • PostRequestHandlerExecute Event

12
Timer Module
BeginRequest
PreRequestEventHandlerExecute
Application Events
Init
Load
Page Events
Unload
PostRequestEventHandlerExecute
EndRequest
TimerModule.cs
13
Clock Resolution
  • QueryPerformanceCounter is accurate to 1/3579545
    of a second or about a millionth of a second

14
The Test
  • Request page 1050 times
  • Discard first 50 requests
  • Log time of each request
  • Average results

15
Database Setup
  • Four Database Tables
  • Products10 10 Rows
  • Products50 50 Rows
  • Products100 100 Rows
  • Products500 500 Rows

16
Whats Faster?
  • DataReader
  • DataSet

DisplayDataReader.aspx
DisplayDataSet.aspx
17
DataReader
18
DataSet
19
DataReader Versus DataSet
20
DataReader Versus DataSetFinal Results
  • On average, a DataReader is 16 faster than
    DataSet

21
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
22
ArrayList
23
Whats Faster?
  • SqlDataReader
  • OleDbDataReader

24
OleDbDataReader
25
OleDbDataReaderFinal Results
  • On average, a SqlDataReader is 115 faster than
    an OleDbDataReader

26
Whats Faster?
  • Inline SQL
  • Stored Procedure

27
Stored Procedure
28
Whats Faster?
  • DataReader Column Reference
  • By Name
  • Response.Write(drProductName)
  • By Ordinal
  • Response.Write(dr0)
  • By GetString()
  • Response.Write(dr.GetString(0))

29
Column Reference
30
Column ReferenceFinal Results
  • On average, ordinal reference is 11 faster than
    by name

31
Whats Faster?
  • Proper Case
  • drProductName
  • Improper Case
  • drPRODUCTNAME

32
Proper Case
33
Proper CaseFinal Results
  • Using proper column case is 1 faster than
    improper column case

34
Whats Faster?
  • Inline
  • ASP.NET Controls

35
DataGrid
36
DataGridFinal Results
  • Inline script is 233 faster than a DataGrid

37
Whats Faster?
  • DataGrid with ViewState Disabled
  • DataGrid with ViewState Enabled

38
ViewState
39
ViewStateFinal Results
  • DataGrid with ViewState disabled is 66 faster
    than DataGrid with ViewState enabled

40
Whats Faster?
  • AutoGenerateColumns
  • Template Columns

41
Template Columns
42
Template ColumnsFinal Results
  • A DataGrid without templates is 39 faster than
    a DataGrid with templates

43
Whats Faster?
  • How to improve template performance?
  • DataBinder.Eval
  • lt DataBinder.Eval(Container.DataItem,
    ProductName) gt
  • Explicit Cast
  • lt ((DbDataRecord)Container.DataItem)"ProductNa
    me"gt
  • ItemDataBound
  • void ItemDataBound(Object s, DataGridItemEventArg
    s e)

DisplayItemDataBound.aspx
44
Template Performance
45
Template PerformanceFinal Results
  • Explicit cast is 11 faster than using a
    databinding expression

46
Creating A Custom Control
  • Would a custom DataGrid (with severely reduced
    functionality) be faster than the standard
    DataGrid?

FastGrid.cs
47
Custom Control
48
Custom ControlFinal Results
  • FastGrid is 37 faster than astandard DataGrid

49
Whats Faster?
  • DataGrid with no caching
  • DataGrid with data caching
  • DataGrid with output caching

50
Data Caching
51
Data CacheFinal Results
  • Using the data cache is 637 faster than a
    standard DataGrid

52
Output Cache
53
Output CacheFinal Results
  • Using the output cache is infinitely faster than
    using a standard DataGrid

54
Conclusions
  • A DataReader is faster than a DataSet
  • An inline DataReader is fasterthan a DataGrid
  • You pay a high price for ViewState
  • AutoGenerateColumns is faster than template
    columns
  • Caching is always a good idea!

55
Performance Resources
  • Microsoft Sites
  • Performance
  • http//msdn.microsoft.com/netframework/using/under
    standing/perf/default.aspx
  • Books
  • Improving .NET Application Performance and
    Scalability
  • http//msdn.microsoft.com/library/en-us/dnpag/html
    /scalenet.asp
  • Software
  • Web Application Stress Tool
  • http//www.microsoft.com/technet/itsolutions/intra
    net/downloads/webstres.mspx
  • CLR Profiler
  • http//www.microsoft.com/downloads/details.aspx?Fa
    milyID86ce6052-d7f4-4aeb-9b7a-94635beebddadispla
    ylangen
  • ANTS Profiler and ANTS Load
  • http//www.Red-Gate.com

56
Please fill out a session evaluation on CommNet
Q1 Overall satisfaction with the
session Q2 Usefulness of the information Q3 Pres
enters knowledge of the subject Q4 Presenters
presentation skills Q5 Effectiveness of the
presentation
Write a Comment
User Comments (0)
About PowerShow.com