<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Vance Morrison's Weblog</title><link>http://blogs.msdn.com/vancem/default.aspx</link><description>Vance Morrison is currently an Architect on the .NET Runtime Team, specializing in performance issues with the runtime or managed code in general. </description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Slides for Patterns &amp; Practices Talk: Desiging for Performance</title><link>http://blogs.msdn.com/vancem/archive/2009/10/13/slides-for-patterns-practices-talk-desiging-for-performance.aspx</link><pubDate>Tue, 13 Oct 2009 23:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9906941</guid><dc:creator>vancem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vancem/comments/9906941.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=9906941</wfw:commentRss><description>&lt;P&gt;Tomorrow (10/14/2009) I am giving a talk on performance at Microsoft-Campus &lt;A href="http://www.pnpsummit.com/west2009/west2009.aspx" mce_href="http://www.pnpsummit.com/west2009/west2009.aspx"&gt;Paterns and Practices Summit&lt;/A&gt;.&amp;nbsp; Below is the abstact for my talk &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;To many developers, high performance development is ‘magic’.&amp;nbsp;&amp;nbsp; It involves multiple metrics (time, memory allocations, footprint, startup) many special tools (profilers, performance counters, ETW, NGEN), special knowledge (cache lines, page faults, seek times), conflicting advice (are generics good or bad for performance?), lots of confusing numbers, and a bunch of extra work.&amp;nbsp;&amp;nbsp;&amp;nbsp; While it is true that performance is a broad topic with lots of details, it is also true that it is relatively easy to sort all of this detail into categories that make the topic of performance much more approachable.&amp;nbsp;&amp;nbsp;&amp;nbsp; This talk simplifies and prioritizes what you need to know in order build high performance applications on .NET.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I have posted the slides here for reference.&amp;nbsp;&amp;nbsp; For those of you who may not have power-point, I have also cut and pasted the bibliography of web links, which are generally useful for those who care about performance. For those of you with power-point, simply click on the hyper link &lt;A href="http://blogs.msdn.com/vancem/attachment/9906941.ashx" mce_href="http://blogs.msdn.com/vancem/attachment/9906941.ashx"&gt;here&lt;/A&gt; or at the end of the article.&lt;/P&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 3.12pt; TEXT-INDENT: -0.38in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.38in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging"&gt;&lt;SPAN style="FONT-SIZE: 13pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;•&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 13pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;Articles&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.38in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O2&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;•&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/cc500596.aspx"&gt;CLR Inside Out: Measure Early and Often for Performance, Part &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/cc500596.aspx"&gt;1&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.38in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O2&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;•&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/cc507639.aspx"&gt;CLR Inside Out: Measure Early and Often for Performance, Part &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/cc507639.aspx"&gt;2&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.38in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O2&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;•&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/dd882521.aspx"&gt;Memory Usage Auditing for .NET &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/dd882521.aspx"&gt;Applications&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 13pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 3.12pt; TEXT-INDENT: -0.38in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.38in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging"&gt;&lt;SPAN style="FONT-SIZE: 13pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;•&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 13pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;Blogs&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 13pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/clrperfblog"&gt; &lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/vancem/"&gt;Vance Morrison's Weblog&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/performance/default.aspx"&gt;Windows &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/performance/default.aspx"&gt;Performance Analysis Developer &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/performance/default.aspx"&gt;Center&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; (not really a blog, but has FAQ and links to other blogs &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/clrperfblog"&gt;…)&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 14pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/clrperfblog"&gt; &lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/clrperfblog"&gt;CLR &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/clrperfblog"&gt;and Framework &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/clrperfblog"&gt;Perf&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/clrperfblog"&gt; &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/clrperfblog"&gt;Blog&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; (.NET Runtime’s Performance Team notes on Performance)&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/ricom/"&gt;Rico &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/ricom/"&gt;Mariani's&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/ricom/"&gt; Performance &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/ricom/"&gt;Tidbits&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: nn-NO; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/profiler/"&gt;Visual Studio Profiler Team &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: nn-NO; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/profiler/"&gt;Blog&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: nn-NO; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.16pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 9pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/hshafi/archive/2009/05/18/visual-studio-2010-beta-1-parallel-performance-tools.aspx"&gt;Hazim&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 9pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/hshafi/archive/2009/05/18/visual-studio-2010-beta-1-parallel-performance-tools.aspx"&gt; &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 9pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/hshafi/archive/2009/05/18/visual-studio-2010-beta-1-parallel-performance-tools.aspx"&gt;Shafi's&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 9pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/hshafi/archive/2009/05/18/visual-studio-2010-beta-1-parallel-performance-tools.aspx"&gt; &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 9pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/hshafi/archive/2009/05/18/visual-studio-2010-beta-1-parallel-performance-tools.aspx"&gt;Blog &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 9pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;(details on VS 2010 new Performance tools)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 11pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/pigscanfly/archive/2008/02/09/xperf-a-new-tool-in-the-windows-sdk.aspx"&gt;Pigs Can Fly : &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/pigscanfly/archive/2008/02/09/xperf-a-new-tool-in-the-windows-sdk.aspx"&gt;Xperf&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/pigscanfly/archive/2008/02/09/xperf-a-new-tool-in-the-windows-sdk.aspx"&gt;, a new tool in the Windows &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/pigscanfly/archive/2008/02/09/xperf-a-new-tool-in-the-windows-sdk.aspx"&gt;SDK&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 3.12pt; TEXT-INDENT: -0.38in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.38in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging"&gt;&lt;SPAN style="FONT-SIZE: 13pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;•&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 13pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;Tools &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/vancem/archive/2009/02/06/measureit-update-tool-for-doing-microbenchmarks.aspx"&gt;MeasureIt&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/vancem/archive/2009/02/06/measureit-update-tool-for-doing-microbenchmarks.aspx"&gt; &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;(Benchmarking tool for design time)&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://social.msdn.microsoft.com/Forums/en-US/vstsprofiler/threads/"&gt;Visual Studio 2008 Profiler&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; (Part of Visual Studio Team System) General CPU profiling&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/hshafi/archive/2009/05/18/visual-studio-2010-beta-1-parallel-performance-tools.aspx"&gt;Visual Studio&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;2010 Parallel Performance Analyzer &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;(Part of Visual Studio Team System) Good all-round profiling (CPU, Disk, Blocked)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 12pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc305187.aspx"&gt; &lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc305187.aspx"&gt;Windows &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc305187.aspx"&gt;Performance Analyzer (WPA)&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; (XPERF&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;), General Sub-process performance analysis.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.16pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 9pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://technet.microsoft.com/en-us/sysinternals/dd535533.aspx"&gt;VMMap&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 9pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; (Measuring the coarse memory usage within a process)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=a362781c-3870-43be-8926-862b40aa0cd0&amp;amp;DisplayLang=en"&gt;CLR Profiler for the .NET Framework 2.0&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;(Measuring detailed memory usage within the GC heap)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt;Process Explorer&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; (A more feature-rich Task Manager)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx"&gt;Process &lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx"&gt;Monitor&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; (A tool for monitoring&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 3.12pt; TEXT-INDENT: -0.38in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.38in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging"&gt;&lt;SPAN style="FONT-SIZE: 13pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;•&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 13pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;Event &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 13pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;Tracing Windows (ETW) Articles &lt;/SPAN&gt;&lt;U style="text-underline: single"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 13pt; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://blogs.msdn.com/clrperfblog"&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/cc163437.aspx"&gt;Event Tracing: Improve Debugging And Performance Tuning With ETW&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/ee412263.aspx"&gt;Core OS Events in Windows 7, Part 1&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: left; MARGIN-TOP: 2.4pt; TEXT-INDENT: -0.31in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.81in; WORD-BREAK: normal; language: en-US; mso-line-break-override: none; punctuation-wrap: hanging" class=O1&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial; mso-special-format: bullet"&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/ee358703.aspx"&gt;Core Instrumentation Events in Windows 7, Part 2&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Calibri; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: bold; language: en-US; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: +mn-cs; mso-ascii-font-family: Calibri; mso-color-index: 1; mso-font-kerning: 12.0pt"&gt; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9906941" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/vancem/attachment/9906941.ashx" length="377920" type="application/vnd.openxmlformats-officedocument.pres" /></item><item><title>Slides for a talk on Performance </title><link>http://blogs.msdn.com/vancem/archive/2009/07/21/slides-for-a-talk-on-performance.aspx</link><pubDate>Tue, 21 Jul 2009 18:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9843454</guid><dc:creator>vancem</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vancem/comments/9843454.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=9843454</wfw:commentRss><description>&lt;P&gt;&amp;nbsp;I am giving a .NET Performance talk for the users group at the Royal Bank of Canada, and I am posting the slides for the talk here for future reference.&amp;nbsp; (see power point document attached to this entry below).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;Anyone who has heard me speak will see recognise the themes:&amp;nbsp; Good perf does not just happen, you have to plan, and to plan you have to measure.&amp;nbsp; I touch very briefly on some ways of measuring (Stopwatch, MeasureIt, XPerf)&lt;/P&gt;
&lt;P&gt;As with all talks, the goal is not so much to teach something, but rather to MOTIVATE you to learn more.&amp;nbsp;&amp;nbsp; Thus I want it to be very easy to follow up on the topics I so briefly touched upon.&amp;nbsp;&amp;nbsp; Thus I have pulled the bibliography out of the deck and placed it here so you can quickly research more. &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Articles&lt;/DIV&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/cc301131.aspx" mce_href="http://msdn.microsoft.com/en-us/magazine/cc301131.aspx"&gt;Vance Morrison's MSDN articles&lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://www.acm.org/ubiquity/views/v7i24_fallacy.html" mce_href="http://www.acm.org/ubiquity/views/v7i24_fallacy.html"&gt;The Fallacy of Premature Optimization (Randall Hyde, ACM.org)&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa292152(VS.71).aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa292152(VS.71).aspx"&gt;MSDN Performance: Designing Distributed Applications&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://www.panopticoncentral.net/archive/2004/02/10/270.aspx" mce_href="http://www.panopticoncentral.net/archive/2004/02/10/270.aspx"&gt;The Ten Rules of Performance&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms998530.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms998530.aspx"&gt;Improving .NET Application Performance and Scalability&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Blogs&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://blogs.msdn.com/vancem/default.aspx" mce_href="http://blogs.msdn.com/vancem/default.aspx"&gt;Vance Morrison's Weblog&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://blogs.msdn.com/ricom/default.aspx" mce_href="http://blogs.msdn.com/ricom/default.aspx"&gt;Rico &lt;/A&gt;&lt;A href="http://blogs.msdn.com/ricom/default.aspx" mce_href="http://blogs.msdn.com/ricom/default.aspx"&gt;Mariani's&lt;/A&gt;&lt;A href="http://blogs.msdn.com/ricom/default.aspx" mce_href="http://blogs.msdn.com/ricom/default.aspx"&gt; Performance Tidbits&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://blogs.msdn.com/clrperfblog/default.aspx" mce_href="http://blogs.msdn.com/clrperfblog/default.aspx"&gt;&lt;FONT color=#0000ff&gt;CLR and Framework &lt;/FONT&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/clrperfblog/default.aspx" mce_href="http://blogs.msdn.com/clrperfblog/default.aspx"&gt;&lt;FONT color=#0000ff&gt;Perf&lt;/FONT&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/clrperfblog/default.aspx" mce_href="http://blogs.msdn.com/clrperfblog/default.aspx"&gt;&lt;FONT color=#0000ff&gt; Blog&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://blogs.msdn.com/pigscanfly/archive/2008/02/09/xperf-a-new-tool-in-the-windows-sdk.aspx" mce_href="http://blogs.msdn.com/pigscanfly/archive/2008/02/09/xperf-a-new-tool-in-the-windows-sdk.aspx"&gt;Xperf&lt;/A&gt;&lt;A href="http://blogs.msdn.com/pigscanfly/archive/2008/02/09/xperf-a-new-tool-in-the-windows-sdk.aspx" mce_href="http://blogs.msdn.com/pigscanfly/archive/2008/02/09/xperf-a-new-tool-in-the-windows-sdk.aspx"&gt; Blog&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&amp;nbsp;Tools&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://blogs.msdn.com/vancem/archive/2009/02/06/measureit-update-tool-for-doing-microbenchmarks.aspx" mce_href="http://blogs.msdn.com/vancem/archive/2009/02/06/measureit-update-tool-for-doing-microbenchmarks.aspx"&gt;MeasureIt&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://msdn.microsoft.com/en-us/performance/default.aspx" mce_href="http://msdn.microsoft.com/en-us/performance/default.aspx"&gt;Xperf&lt;/A&gt;&lt;A href="http://msdn.microsoft.com/en-us/performance/default.aspx" mce_href="http://msdn.microsoft.com/en-us/performance/default.aspx"&gt; performance analysis tool&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;I did not have time to more than just mention it, but I want to emphasize here that Event Tracing for Windows (ETW) and its viewer (XPERF), is the most useful general purpose tool for doing performance analysis on windows, period.&amp;nbsp;&amp;nbsp;&amp;nbsp; It is well worth investing time&amp;nbsp;in learning about it more.&amp;nbsp;&amp;nbsp;&amp;nbsp; Currently it has some limitations associated with&amp;nbsp;diagnosing managed code, however rest assured that we are addressing these issues.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&amp;nbsp;An important take away here is that&amp;nbsp;learning about XPERF is a great investment.&amp;nbsp;&amp;nbsp; It is THE tool that the entire Windows team uses for all of its&amp;nbsp;performance diagnosis, and we are investing in it for the future too.&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9843454" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/vancem/attachment/9843454.ashx" length="233361" type="application/vnd.openxmlformats-officedocument.pres" /><category domain="http://blogs.msdn.com/vancem/archive/tags/Perf/default.aspx">Perf</category></item><item><title>Here is your chance to get your Performance requests in for the next version of the .NET Runtime</title><link>http://blogs.msdn.com/vancem/archive/2009/05/28/here-is-your-chance-to-get-your-performance-requests-in-for-the-next-version-of-the-net-runtime.aspx</link><pubDate>Fri, 29 May 2009 00:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9649267</guid><dc:creator>vancem</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/vancem/comments/9649267.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=9649267</wfw:commentRss><description>&lt;P&gt;If you use managed code, and you care about performance, then we want to hear from you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;We have not yet shipped the next version (what we call Version 4) of the .NET Runtime, however we are 'locked down' enough that at least a few of us on the runtime team are preparing for the version after that (as yet unnamed).&amp;nbsp;&amp;nbsp; As part of that planning excercise we want YOUR input.&amp;nbsp;&amp;nbsp;&amp;nbsp; The .NET Performance team wants to know what your 'performance pain points' (is it startup, some throughput scenario, ASP.NET client etc), so we can address your most important issues.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;To submit your feedback simply go to the site &lt;A href="http://dotnetfxperf2009.questionpro.com/"&gt;http://dotnetfxperf2009.questionpro.com/&lt;/A&gt;&amp;nbsp;and fill out the form.&amp;nbsp;&amp;nbsp; We tried to keep it short and 'low overhead' (we are the performance team after all (:-).&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Thanks&lt;/P&gt;
&lt;P&gt;Vance Morrison&lt;/P&gt;
&lt;P&gt;.NET Runtime Performance Architect.&amp;nbsp; &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9649267" width="1" height="1"&gt;</description></item><item><title>Musings on the .NET Runtime on Channel 9</title><link>http://blogs.msdn.com/vancem/archive/2009/05/19/musings-on-the-net-runtime-on-channel-9.aspx</link><pubDate>Tue, 19 May 2009 19:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9628370</guid><dc:creator>vancem</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vancem/comments/9628370.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=9628370</wfw:commentRss><description>&lt;P&gt;In case anyone is interested I did an video&amp;nbsp;interview&amp;nbsp;on the runtime in general.&amp;nbsp;&amp;nbsp; This is more about philosophy than technology, but if you are in the mood for some philosophy about the runtime, here is some from someone who has been around from the CLR's begining.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://channel9.msdn.com/shows/Going+Deep/Vance-Morrison-CLR-Through-the-Years/"&gt;http://channel9.msdn.com/shows/Going+Deep/Vance-Morrison-CLR-Through-the-Years/&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9628370" width="1" height="1"&gt;</description></item><item><title>MeasureIt Update: Tool for doing MicroBenchmarks for .NET</title><link>http://blogs.msdn.com/vancem/archive/2009/02/06/measureit-update-tool-for-doing-microbenchmarks.aspx</link><pubDate>Sat, 07 Feb 2009 05:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9403324</guid><dc:creator>vancem</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/vancem/comments/9403324.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=9403324</wfw:commentRss><description>&lt;P&gt;Almost a year ago now I wrote &lt;A class="" href="http://msdn.microsoft.com/en-us/magazine/cc500596.aspx" mce_href="http://msdn.microsoft.com/en-us/magazine/cc500596.aspx"&gt;part 1&lt;/A&gt; and &lt;A class="" href="http://msdn.microsoft.com/en-us/magazine/cc507639.aspx" mce_href="http://msdn.microsoft.com/en-us/magazine/cc507639.aspx"&gt;part 2&lt;/A&gt; of a MSDN article entitled 'Measure Early and Measure Often for Good Performance'.&amp;nbsp; In this article I argued that if you want to design high performance applications you need to be measuring performance early and often in the design process.&amp;nbsp;&amp;nbsp; To help doing this I posted a tool call 'MeasureIt'.&amp;nbsp; It basically makes it easy to write benchmarks for .NET code.&amp;nbsp;&amp;nbsp; In particular it also comes with at set of built-in benchmarks that measure the most important fundamental operations in .NET, so you can know what is expensive and what is not.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Well, is has been a almost a year, and I have made a few bug fixes / improvements ot MeasureIt since then, so this post brings MeasureIt up to date.&amp;nbsp;&amp;nbsp; It also allows me to correct a mistake I made when I posted the unoptimized version of MeasureIt for that article.&amp;nbsp; It also allows me to improve the user experience during the download.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;MeasureIt is supper easy to use in the simple case (just run it), and has good documentation (MeasureIt /usersGuide).&amp;nbsp;&amp;nbsp; You are in fact only&amp;nbsp;7 clicks away from running it right now.&amp;nbsp;&amp;nbsp; To do so&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Click on the 'MeasureIt.zip' link at the bottom of this article.&amp;nbsp; This brings up a download dialog box. &lt;/LI&gt;
&lt;LI&gt;Click on the 'Open' button.&amp;nbsp; This brings up a security dialog.&lt;/LI&gt;
&lt;LI&gt;You should click 'Allow' on the security dialog.&amp;nbsp; (Yes you have to trust me).&amp;nbsp; This opens the ZIP archive. &lt;/LI&gt;
&lt;LI&gt;Click on the 'MeasureIt' directory (alternatively you can copy it to your hard drive).&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;Click on the 'MeasureIt.exe' file&lt;/LI&gt;
&lt;LI&gt;Click on the 'Run' dialog box that comes up.&lt;/LI&gt;
&lt;LI&gt;You may get another security dialog.&amp;nbsp; You have to allow that.&amp;nbsp;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;At this point&amp;nbsp;it runs MeasureIt.&amp;nbsp; It takes a few seconds for it it run and then it displays the data on the&amp;nbsp;costs of&amp;nbsp;50 or so .NET operations.&amp;nbsp;&amp;nbsp;&amp;nbsp;As mentioned in the article, this it&amp;nbsp;really useful stuff.&amp;nbsp;&amp;nbsp; MeasureIt comes with its own source code, and typeing 'MeasureIt&amp;nbsp;/Edit' allows you to add more benchmarks to it if you&amp;nbsp;want&amp;nbsp;to measure somethign of your own.&amp;nbsp; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;Happy Performance Investigating!&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9403324" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/vancem/attachment/9403324.ashx" length="72242" type="application/x-zip-compressed" /></item><item><title>Slides for our All Day PDC 2008 talks on: Performance By Design </title><link>http://blogs.msdn.com/vancem/archive/2008/10/30/slides-for-our-all-day-pdc-2008-talks-on-performance-by-design.aspx</link><pubDate>Thu, 30 Oct 2008 07:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9023656</guid><dc:creator>vancem</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vancem/comments/9023656.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=9023656</wfw:commentRss><description>&lt;P&gt;Every&amp;nbsp;year or so,&amp;nbsp;when Microsoft&amp;nbsp;believes it has something useful to say to develoeprs it&amp;nbsp;hosts a&amp;nbsp;Programmer Developer's Conference.&amp;nbsp;&amp;nbsp;It is doing so this year from 10/27 through 10/30.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Between&amp;nbsp;Rico Marani, Mark Friedman and myself, we gave a all day talk on writing high performance software for the .NET Runtime.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;I am posting the slides here for reference.&amp;nbsp;&amp;nbsp; I had to break the slides up into the sessions we gave them to fit within the size restrictions of the blog.&amp;nbsp; I also had to post them as seperate posting (since the blog software seems to only support one attachment per blog entry).&amp;nbsp;&amp;nbsp; However I have put the quick links to them here.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A id=bp___v___ctl00_ctl00_bcr_r___postlist___EntryItems_ctl02_Attachment___DownLoadLink href="http://blogs.msdn.com/vancem/attachment/9023614.ashx" minmax_bound="true"&gt;&lt;FONT color=#0033cc&gt;PerfByDesign.Intro.pptx&lt;/FONT&gt;&lt;/A&gt; - talk given by Rico Mariani on the importance of thinking about performance early in the design cycle. &lt;/LI&gt;
&lt;LI&gt;&lt;A id=bp___v___ctl00_ctl00_bcr_r___postlist___EntryItems_ctl05_Attachment___DownLoadLink href="http://blogs.msdn.com/vancem/attachment/9023599.ashx" minmax_bound="true"&gt;PerfByDesign.CPU.pptx&lt;/A&gt; talk given by&amp;nbsp;me on measuring time (particularly CPU time).&amp;nbsp; I talk about MeasureIt here.&lt;/LI&gt;
&lt;LI&gt;&lt;A id=bp___v___ctl00_ctl00_bcr_r___postlist___EntryItems_ctl04_Attachment___DownLoadLink href="http://blogs.msdn.com/vancem/attachment/9023602.ashx" minmax_bound="true"&gt;&lt;FONT color=#0033cc&gt;PerfByDesign.Memory.pptx&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp; talk given by me on measuring memory in managed applications (Good Stuff)&lt;/LI&gt;
&lt;LI&gt;&lt;A id=bp___v___ctl00_ctl00_bcr_r___postlist___EntryItems_ctl03_Attachment___DownLoadLink href="http://blogs.msdn.com/vancem/attachment/9023609.ashx" minmax_bound="true"&gt;PerfByDesign.Parallel.pptx&lt;/A&gt; talk given by me on using our new Parallel Extentions Framework (PFX) to&amp;nbsp;exploit multi-procs.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A id=bp___v___ctl00_ctl00_bcr_r___postlist___EntryItems_ctl01_Attachment___DownLoadLink href="http://blogs.msdn.com/vancem/attachment/9023627.ashx" minmax_bound="true"&gt;PerfByDesign.aspnet.pptx&lt;/A&gt; talk given by Mark Friedman on tuning ASP.NET applications. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;These slides are of course more useful to those who actually attended the talks, however I think there is a lot that can be learned from them even without having heard us talk.&amp;nbsp; I am happy to answer any questions that anyone might have after viewing the slides.&lt;/P&gt;
&lt;P&gt;You can view the other talks and slides from the PDC by going to there web site &lt;A href="http://microsoftpdc.com/Agenda/"&gt;http://microsoftpdc.com/Agenda/&lt;/A&gt;.&amp;nbsp;&amp;nbsp;This will certainly work for those attending the PDC, but might work for everyone (I don't really know). &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9023656" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vancem/archive/tags/Perf/default.aspx">Perf</category><category domain="http://blogs.msdn.com/vancem/archive/tags/.NET+Architecture/default.aspx">.NET Architecture</category></item><item><title>Slides for PDC 2008 Talk: Performance By Design: ASP.NET Performance </title><link>http://blogs.msdn.com/vancem/archive/2008/10/30/slides-for-pdc-2008-talk-performance-by-design-asp-net-performance.aspx</link><pubDate>Thu, 30 Oct 2008 07:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9023627</guid><dc:creator>vancem</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/vancem/comments/9023627.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=9023627</wfw:commentRss><description>&lt;P&gt;These are the slides that Mark Friedman used to talk about ASP.NET Performance at the Programmer Developers Conference. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9023627" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/vancem/attachment/9023627.ashx" length="3633419" type="application/vnd.openxmlformats-officedocument.pres" /></item><item><title>Slides for PDC 2008 Talk: Performance By Design: Rico Mariani's Introduction</title><link>http://blogs.msdn.com/vancem/archive/2008/10/30/slides-for-pdc-2008-talk-performance-by-design-rico-mariani-s-introduction.aspx</link><pubDate>Thu, 30 Oct 2008 07:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9023614</guid><dc:creator>vancem</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/vancem/comments/9023614.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=9023614</wfw:commentRss><description>These are the slides Rico Mariani used to introduce the all day session we gave on .NET performance at the 2008 Programmer Developers Conference.&amp;nbsp; &lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9023614" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/vancem/attachment/9023614.ashx" length="706664" type="application/vnd.openxmlformats-officedocument.pres" /></item><item><title>Slides for PDC 2008 Talk: Performance By Design: Parrallel Programming</title><link>http://blogs.msdn.com/vancem/archive/2008/10/30/slides-for-pdc-2008-talk-performance-by-design-parrallel-programming.aspx</link><pubDate>Thu, 30 Oct 2008 07:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9023609</guid><dc:creator>vancem</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/vancem/comments/9023609.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=9023609</wfw:commentRss><description>These are the slides for the third (of 3) talks I gave on 10/26/2008 at the Programmer Developer Converence (PDC) doing parallel programming with the .NET runtime.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9023609" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/vancem/attachment/9023609.ashx" length="375605" type="application/vnd.openxmlformats-officedocument.pres" /></item><item><title>Slides for PDC 2008 Talk: Performance By Design: Measuring Memory</title><link>http://blogs.msdn.com/vancem/archive/2008/10/30/slides-for-pdc-2008-talk-performance-by-design-measuring-memory.aspx</link><pubDate>Thu, 30 Oct 2008 07:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9023602</guid><dc:creator>vancem</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/vancem/comments/9023602.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=9023602</wfw:commentRss><description>&lt;P&gt;These are the slides for the second (of 3) talks I gave on 10/26/2008 at the Programmer Developer Converence (PDC) memory investigation.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9023602" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/vancem/attachment/9023602.ashx" length="538650" type="application/vnd.openxmlformats-officedocument.pres" /></item><item><title>Slides for PDC 2008 Talk: Performance By Design: Measuring CPU Time</title><link>http://blogs.msdn.com/vancem/archive/2008/10/30/slides-for-pdc-2008-talk-performance-by-design-measuring-cpu-time.aspx</link><pubDate>Thu, 30 Oct 2008 07:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9023599</guid><dc:creator>vancem</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/vancem/comments/9023599.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=9023599</wfw:commentRss><description>&lt;P&gt;These are the slides for the talk I gave on 10/26/2008 at the Programmer Developer Converence (PDC) on the basics of performance investigation &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9023599" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/vancem/attachment/9023599.ashx" length="385513" type="application/vnd.openxmlformats-officedocument.pres" /><category domain="http://blogs.msdn.com/vancem/archive/tags/Perf/default.aspx">Perf</category><category domain="http://blogs.msdn.com/vancem/archive/tags/.NET+Architecture/default.aspx">.NET Architecture</category></item><item><title>Links to MSDN articles I have written on designing for performance</title><link>http://blogs.msdn.com/vancem/archive/2008/10/22/links-to-msdn-articles-i-have-written-on-designing-for-performance.aspx</link><pubDate>Wed, 22 Oct 2008 17:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9011163</guid><dc:creator>vancem</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/vancem/comments/9011163.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=9011163</wfw:commentRss><description>&lt;P&gt;I just happen to notice that I don't have any links from my blog to some recient MSDN articles I wrote on performance.&amp;nbsp;&amp;nbsp; I want to quickly correct his with this posting.&lt;/P&gt;
&lt;P&gt;There is actually a very nice summary page that MSDN created that gathers together all the articles I have written over time.&amp;nbsp; The link is &lt;A class="" href="http://msdn.microsoft.com/en-us/magazine/cc301131.aspx" mce_href="http://msdn.microsoft.com/en-us/magazine/cc301131.aspx"&gt;here&lt;/A&gt; (a web search of MSDN Vance Morrison will also turn it up).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;The two articles I want to call your attention to however are these&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://msdn.microsoft.com/en-us/magazine/cc500596.aspx" mce_href="http://msdn.microsoft.com/en-us/magazine/cc500596.aspx"&gt;CLR Inside Out: Measure Early and Often for Performance, Part 1&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://msdn.microsoft.com/en-us/magazine/cc507639.aspx" mce_href="http://msdn.microsoft.com/en-us/magazine/cc507639.aspx"&gt;CLR Inside Out: Measure Early and Often for Performance, Part 2&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;These articles are about how most perf problems start very early in the design, and that there is no substitute for knowing how much things cost when doing your design.&lt;/P&gt;
&lt;P&gt;There is a nice companion tool that I wrote callled 'MeasureIt' which you get download (free), that allows you to&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Get a bunch of useful benchmarks on how much various .NET operations cost&lt;/LI&gt;
&lt;LI&gt;Measure other stuff that you happen to be interested in easily (eg how fast is that collection class you are using?)&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;In fact, I intend I just recently used MeasureIt to measure how expensive the various levels of the CPU cache hierarchy are.&amp;nbsp;&amp;nbsp; (that is how much does a fetch from L1 cost?&amp;nbsp; How much if you miss the L1 Cache but hit the L2 cache?&amp;nbsp; How much&amp;nbsp;more expensive is it when you miss both L1 and L2 and have to go to main memory?).&amp;nbsp;&amp;nbsp; If there is interest I can write a quick blog about that.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9011163" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vancem/archive/tags/Perf/default.aspx">Perf</category><category domain="http://blogs.msdn.com/vancem/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Giving Performance Talk at Programmer Developers Conference (PDC) 10/26</title><link>http://blogs.msdn.com/vancem/archive/2008/09/25/giving-performance-talk-at-programmer-developers-conference-pdc-10-26.aspx</link><pubDate>Thu, 25 Sep 2008 19:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8965246</guid><dc:creator>vancem</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vancem/comments/8965246.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=8965246</wfw:commentRss><description>&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;This&amp;nbsp;is a quick plug for a pre-conference session I am giving on 10/26 at Microsoft’s &lt;A href="http://www.microsoftpdc.com/Agenda/Preconference.aspx" mce_href="http://www.microsoftpdc.com/Agenda/Preconference.aspx"&gt;Programmer Developers Conference&lt;/A&gt; (PDC) 10/26 held this year in Los Angeles.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;My talks are part of a all day session that I am giving along with &lt;A href="http://blogs.msdn.com/ricom/"&gt;Rico Mariani&lt;/A&gt; and Mark Friedman entitled&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-ALIGN: center" align=center&gt;&lt;FONT face=Calibri size=3&gt;Performance by design using the .NET Framework&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;FONT face=Calibri size=3&gt;In the morning Rico will be starting us off with some basics: having a performance budget, designing for performance and the basic of measuring.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Mark will speak on the performance characteristics of important parts of the framework.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;In the afternoon, I will be doing two sessions, the first is on memory performance in .NET:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;when you should care, how to measure it, behavior of the GC, and best practices.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;I will follow up on multi-threading performance in .NET.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This session will overlap a bit with the talk on multi-core programming, but I will focus on the .NET aspects only try to have a very practical perspective.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Finally Mark will finish off with two talks, one on ASP.NET performance, and another on Silverlight performance.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in"&gt;&lt;FONT face=Calibri size=3&gt;I am looking forward to it.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;If you are interested, you can learn more about registration &lt;/FONT&gt;&lt;A href="http://www.microsoftpdc.com/Agenda/Preconference.aspx"&gt;&lt;FONT face=Calibri size=3&gt;here&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;I am also interested in talking to customers and getting feedback, so if you want to talk to someone who has been on the .NET Runtime team 'forever', come to the PDC and we can talk.&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8965246" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vancem/archive/tags/Perf/default.aspx">Perf</category><category domain="http://blogs.msdn.com/vancem/archive/tags/.NET+Architecture/default.aspx">.NET Architecture</category></item><item><title>To Inline or not to Inline: That is the question</title><link>http://blogs.msdn.com/vancem/archive/2008/08/19/to-inline-or-not-to-inline-that-is-the-question.aspx</link><pubDate>Wed, 20 Aug 2008 06:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8880541</guid><dc:creator>vancem</dc:creator><slash:comments>19</slash:comments><comments>http://blogs.msdn.com/vancem/comments/8880541.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=8880541</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;In a &lt;A href="http://blogs.msdn.com/vancem/archive/2008/05/12/what-s-coming-in-net-runtime-performance-in-version-v3-5-sp1.aspx" mce_href="http://blogs.msdn.com/vancem/archive/2008/05/12/what-s-coming-in-net-runtime-performance-in-version-v3-5-sp1.aspx"&gt;previous posting&lt;/A&gt;, I mentioned that &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;amp;displaylang=en"&gt;.NET V3.5 Service Pack 1&lt;/A&gt; had significant improvements in the Just in time (JIT) compiler for the X86 platform, and in particular its ability to inline methods was improved (especially for methods with value type arguments).&amp;nbsp;&amp;nbsp; Well now that this release is publically available my claim can be put to the test.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;In fact a industrious blogger named &lt;A href="http://www.cuttingedge.it/blogs/steven"&gt;Steven&lt;/A&gt; did just that and blogged about it &lt;A href="http://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=40#body"&gt;here&lt;/A&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;What he did was to create a series of methods each a bit bigger than the previous one, and determined whether they got inlined or not.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Steven did this by throwing an exception and then programmatically inspecting the stack trace associated with the exception.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;This makes sense when you are trying to automate the analysis, but for simple one-off cases, it is simpler and more powerful to simply look at the native instructions.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;See &lt;A href="http://blogs.msdn.com/vancem/archive/2006/02/20/535807.aspx" mce_href="http://blogs.msdn.com/vancem/archive/2006/02/20/535807.aspx"&gt;this blog&lt;/A&gt; for details on how to using Visual Studio.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;What Steven found was that when tried to inline the following method&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public void X18(int a)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if (a &amp;lt; 0 || a == 100)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Throw(a * 2);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;It did not inline.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This was not what Steven expected, because this method was only 18 bytes of IL.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The previous version of the runtime would inline methods up to 32 bytes.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;It seems like the JIT’s ability to inline is getting worse, not better.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;What is going on? &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;Well, at the heart of this anomaly is a very simple fact: &lt;B style="mso-bidi-font-weight: normal"&gt;It is not always better to inline&lt;/B&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Inlining always reduces the number of instructions executed (since at a minimum the call and return instructions are not executed), but it can (and often does), make the resulting code bigger.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Most of us would intuitively know that it does not make sense to inline large methods (say 1Kbytes), and that inlining very small methods that make the call site smaller (because a call instruction is 5 bytes), are always a win, but what about the methods in between?&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;Interestingly, as you make code bigger, you make it slower, because inherently, memory is slow, and the bigger your code, the more likely it is not in the fastest CPU cache (called L1), in which case the processor stalls 3-10 cycles until it can be fetched from another cache (called L2), and if not there, in main memory (taking 10+ cycles).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;For code that executes in tight loops, this effect is not problematic because all the code will ‘fit’ in the fastest cache (typically 64K), however for ‘typical’ code, which executes a lot of code from a lot of methods, the ‘bigger is slower’ effect is very pronounced.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Bigger code also means bigger disk I/O to get the code off the disk at startup time, which means that your application starts slower.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;In fact, the first phase of the JIT inlining improvement was simply to remove the restrictions on JIT inlining.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;After that phase was complete we could inline A LOT, and in fact the performance of many of our ‘real world’ benchmarks DECREASED.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Thus we had irrefutable evidence that inlining could be BAD for performance.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;We had to be careful; too much inlining was a bad thing.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;Ideally you could calculate the effect of code size on caching and make a principled decision on when inlining was good and bad.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Unfortunately, the JIT compiler has does not have enough information to take such a principled approach.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;However some things where clear&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;1.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;If inlining makes code smaller then the call it replaces, it is ALWAYS good.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Note that we are talking about the NATIVE code size, not the IL code size (which can be quite different).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;2.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;The more a particular call site is executed, the more it will benefit from inlning.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Thus code in loops deserves to be inlined more than code that is not in loops.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;3.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;If inlining exposes important optimizations, then inlining is more desirable.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In particular methods with value types arguments benefit more than normal because of optimizations like this and thus having a bias to inline these methods is good.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;Thus the heuristic the X86 JIT compiler uses is, given an inline candidate. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;1.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;Estimate the size of the call site if the method were not inlined.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;2.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;Estimate the size of the call site if it were inlined (this is an estimate based on the IL, we employ a simple state machine (Markov Model), created using lots of real data to form this estimator logic)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;3.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;Compute a multiplier.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;By default it is 1 &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;4.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;Increase the multiplier if the code is in a loop (the current heuristic bumps it to 5 in a loop)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;5.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;Increase the multiplier if it looks like struct optimizations will kick in. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;6.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;If InlineSize &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;lt;= NonInlineSize * Multiplier do the inlining.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;What this means is that by default, only methods that do not grow the call site will be inlined, however if the code is in a loop, it can grow as much as 5x &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;What does this mean for Steven’s test?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;It means that simple tests based solely on IL size are not accurate.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;First what is important is the Native size, not the IL size, and more importantly, it is much more likely to be inlined if the method is in a loop. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;In particular, if you modify Steven’s test so that the methods are in a loop when they are called, in fact all of his test methods get inlined.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;To be sure, the heuristics are not perfect.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The worse case is a method that is too big to be inlined, but is still called A LOT (it is in a loop) and calls other small methods that COULD be inlined but are not because they are not in a loop.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;The problem is that the JIT does not know if the method is called a lot or not, and by default does not inline in that case. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;We are considering adding an attribute to a method which gives a strong hint that the method is called a lot and thus would bump the multiplier much like if there was a loop, but this does not exist now.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;We definitely are interested in feedback on our inlining heuristic.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If Steven or anyone else finds real examples where we are missing important inlining opportunities we want to know about them, so we can figure out whether we can adjust our heuristics (but please keep in mind that they are heurisitics.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;They will never be perfect).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8880541" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vancem/archive/tags/Perf/default.aspx">Perf</category><category domain="http://blogs.msdn.com/vancem/archive/tags/.NET+Architecture/default.aspx">.NET Architecture</category></item><item><title>.NET Framework 3.5 SP1 Allows managed code to be launched from a network share!</title><link>http://blogs.msdn.com/vancem/archive/2008/08/13/net-framework-3-5-sp1-allows-managed-code-to-be-launched-from-a-network-share.aspx</link><pubDate>Thu, 14 Aug 2008 01:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8861795</guid><dc:creator>vancem</dc:creator><slash:comments>20</slash:comments><comments>http://blogs.msdn.com/vancem/comments/8861795.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vancem/commentrss.aspx?PostID=8861795</wfw:commentRss><description>&lt;P&gt;Hurray, its finally fixed!&amp;nbsp; manage code 'just works' from network file share!&lt;/P&gt;
&lt;P&gt;Now I know that some of you are probably just saying 'who cares' or 'huh?' but for those of us who have hit this problem, this has been a major deployment headache, and I am happy to say that the end of this particular problem is in sight.&lt;/P&gt;
&lt;P&gt;The problem scenario is this.&amp;nbsp; If you have a managed applications like 'MyApp.exe' it works great if you run it locally (eg C:\bin\MyApp.exe), but fails when you try to run it from a network location (eg &lt;A href="file://myhost/bin/MyApp.exe"&gt;\\Myhost\bin\MyApp.exe&lt;/A&gt;).&amp;nbsp;&amp;nbsp; The problem is that the security system for the runtime treats network locations as less trustworthy than local locations, and thus throws an security exception.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The problem is that failing to run managed code WHILE STILL ALLOWING UNMANAGED EXE's to run, does not provide any security (because hackers will simply use unmanaged code) but does cause nontrivial deployment headaches (manage apps can't be run from network locations).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Well,&amp;nbsp;the better part of a year ago I ask&amp;nbsp;Brad Abrams to do a&lt;A class="" href="http://blogs.msdn.com/brada/archive/2007/10/26/adhoc-poll-allowing-net-exes-to-run-off-a-network-share.aspx" mce_href="http://blogs.msdn.com/brada/archive/2007/10/26/adhoc-poll-allowing-net-exes-to-run-off-a-network-share.aspx"&gt; poll on&amp;nbsp;this issue&lt;/A&gt;&amp;nbsp;and we found that there was quite a bit of customer deployment pain associated with this issue, and after much deliberation decided to fix it.&amp;nbsp;&amp;nbsp;&amp;nbsp; The exact details were covered in &lt;A class="" href="http://blogs.msdn.com/shawnfa/archive/2008/05/12/fulltrust-on-the-localintranet.aspx" mce_href="http://blogs.msdn.com/shawnfa/archive/2008/05/12/fulltrust-on-the-localintranet.aspx"&gt;Shawn Farkas Blog&lt;/A&gt;, however the high level take-away is that for the vast majority of scenarios 'it just works' meaning that managed code acts just like unmanaged code as far as launching EXE from network shares are concerned.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;So I do encourage you to down load the &lt;A class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;amp;displaylang=en"&gt;.NET 3.5 SP1 service pack&lt;/A&gt;.&amp;nbsp; It is a very low risk, drop-in update for the runtime.&amp;nbsp; Once you do this, you get network launch for free.&amp;nbsp;&amp;nbsp; Because it is a service pack, you can also simply just wait, and get the update automatically in the next several weeks via windows update.&amp;nbsp;&amp;nbsp;&amp;nbsp; Thus if you are software deployer, pretty soon now, with high probability your customers will have this newer runtime.&lt;/P&gt;
&lt;P&gt;Have fun!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;P.S: for those of you who are concerned that we have opened security holes by doing this, we have tried to be VERY careful not to do this.&amp;nbsp; The basic rationale is that we are not opening any holes that were not already there because Windows allows non-managed exes to run from a network share.&amp;nbsp;&amp;nbsp;&amp;nbsp; By the way, if you WANT to lock down your network access (prevent exes from a network share from running, (or even just exes that are in speical locations), you can do this with &lt;A class="" href="http://technet.microsoft.com/en-us/library/bb457006.aspx" mce_href="http://technet.microsoft.com/en-us/library/bb457006.aspx"&gt;Software Policies&lt;/A&gt;.&amp;nbsp; That is the proper way to lock down your computer.&amp;nbsp; &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8861795" width="1" height="1"&gt;</description></item></channel></rss>