5. Anti-Objectives
• This presentation is not:
– … an endorsement of any specific ORM, or even ORMs in
general.
– … an endorsement of any specific tools, languages, or
frameworks.
– … a formula for a ‘silver bullet’.
6. Objectives
• “This presentation will discuss the importance of
integrating ORM performance analysis into your ALM
process and demonstrate a powerful method for doing
so by leveraging your existing CI/TFS environment.”
• This presentation is:
– … framed in the context of the .NET technology stack.
– … an application of simple ideas and established best-practices.
– … a suggestion that carries real, measurable ROI potential.
12. Why Bother?: Some Numbers
4.8 Years
7.8 Months
• Send packet around the
world?
• Read 1 MB from HD?
11.6 Days
• Read 1 MB from SSD?
5.8 Days
• Make roundtrip in data
center?
1.6 Minutes
.5 Seconds
• Main Memory Ref
• L1 Cache Ref
https://gist.github.com/hellerbarde/2843375
15. Why Bother?: Other Detectable Issues
•
•
•
•
•
•
•
•
•
•
•
N+1
Too many joins
Variable SQL parameter sizes
Querying from a view
Ends with queries (like ‘%...’)
Excessive return rows
Excessive individual writes
Mixing queries and data binding
Excessive database calls
Unbounded result set
And more:
http://www.hibernatingrhinos.com/products/eprof/learn
Advantages of CI:Detect and resolve bugs and code quality issues continuouslyEarly discovery of code conflictsCurrent build is ‘always’ availableProvides central environment for long-running metrics build (which is huge for us!)Encourages frequent check-ins, which tends to result in more modular codeTRANSITION: Code ‘quality’ checked continuously!
Monitor.Enter() is to force MSTest to run initialize/tear-down methods synchronously
Monitor.Enter() is to force MSTest to run initialize/tear-down methods synchronously