Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
497
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
25
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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 to custom 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 PostRequestEventHandlerExecute EndRequest Load Init Unload TimerModule.cs PreRequestEventHandlerExecute BeginRequest Application Events Page Events
  • 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. What’s Faster?
    • DataReader
    • DataSet
    DisplayDataReader.aspx DisplayDataSet.aspx
  • 17. DataReader
  • 18. DataSet
  • 19. DataReader Versus DataSet
  • 20. DataReader Versus DataSet Final 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. What’s Faster?
    • SqlDataReader
    • OleDbDataReader
  • 24. OleDbDataReader
  • 25. OleDbDataReader Final Results
    • On average, a SqlDataReader is 115% faster than an OleDbDataReader
  • 26. What’s Faster?
    • Inline SQL
    • Stored Procedure
  • 27. Stored Procedure
  • 28. What’s Faster?
    • DataReader Column Reference
    • By Name:
    • Response.Write(dr[“ProductName”]);
    • By Ordinal:
    • Response.Write(dr[0]);
    • By GetString():
    • Response.Write(dr.GetString(0));
  • 29. Column Reference
  • 30. Column Reference Final Results
    • On average, ordinal reference is 11% faster than by name
  • 31. What’s Faster?
    • Proper Case
    • dr[“ProductName”]
    • Improper Case
    • dr[“PRODUCTNAME”]
  • 32. Proper Case
  • 33. Proper Case Final Results
    • Using proper column case is 1% faster than improper column case
  • 34. What’s Faster?
    • Inline
    • ASP.NET Controls
  • 35. DataGrid
  • 36. DataGrid Final Results
    • Inline script is 233% faster than a DataGrid
  • 37. What’s Faster?
    • DataGrid with ViewState Disabled
    • DataGrid with ViewState Enabled
  • 38. ViewState
  • 39. ViewState Final Results
    • DataGrid with ViewState disabled is 66% faster than DataGrid with ViewState enabled
  • 40. What’s Faster?
    • AutoGenerateColumns
    • Template Columns
  • 41. Template Columns
  • 42. Template Columns Final Results
    • A DataGrid without templates is 39% faster than a DataGrid with templates
  • 43. What’s Faster?
    • How to improve template performance?
    • DataBinder.Eval
    • <%# DataBinder.Eval(Container.DataItem, “ProductName”) %>
    • Explicit Cast
    • <%# ((DbDataRecord)Container.DataItem)[&quot;ProductName&quot;]%>
    • ItemDataBound
    • void ItemDataBound(Object s, DataGridItemEventArgs e)
    DisplayItemDataBound.aspx
  • 44. Template Performance
  • 45. Template Performance Final 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 Control Final Results
    • FastGrid is 37% faster than a standard DataGrid
  • 49. What’s Faster?
    • DataGrid with no caching
    • DataGrid with data caching
    • DataGrid with output caching
  • 50. Data Caching
  • 51. Data Cache Final Results
    • Using the data cache is 637% faster than a standard DataGrid
  • 52. Output Cache
  • 53. Output Cache Final 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 faster than 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/understanding/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/intranet/downloads/webstres.mspx
      • CLR Profiler
        • http://www.microsoft.com/downloads/details.aspx?FamilyID=86ce6052-d7f4-4aeb-9b7a-94635beebdda&displaylang=en
      • ANTS Profiler and ANTS Load
        • http://www.Red-Gate.com
  • 56. Q1: Overall satisfaction with the session Q2: Usefulness of the information Q3: Presenter’s knowledge of the subject Q4: Presenter’s presentation skills Q5: Effectiveness of the presentation Please fill out a session evaluation on CommNet