<?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>Developer Division Performance Engineering blog : Visual Studio</title><link>http://blogs.msdn.com/ddperf/archive/tags/Visual+Studio/default.aspx</link><description>Tags: Visual Studio</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Looking at Virtual Memory Usage</title><link>http://blogs.msdn.com/ddperf/archive/2009/12/08/looking-at-virtual-memory-usage.aspx</link><pubDate>Tue, 08 Dec 2009 15:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9934093</guid><dc:creator>David Berg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ddperf/comments/9934093.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ddperf/commentrss.aspx?PostID=9934093</wfw:commentRss><description>&lt;P&gt;Brian Harry is continuing a great series of posts on VS2010 performance, you can read the latest in that series &lt;A class="" title="BHarry's blog - Virtual Memory Usahe" href="http://blogs.msdn.com/bharry/archive/2009/12/08/looking-at-virtual-memory-usage.aspx" mce_href="http://blogs.msdn.com/bharry/archive/2009/12/08/looking-at-virtual-memory-usage.aspx"&gt;here&lt;/A&gt;; where Brian talks about the issues we've been seeing around Virtual Memory Exhaustion and what we're doing to address it.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9934093" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ddperf/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Virtual+Memory/default.aspx">Virtual Memory</category></item><item><title>Improving the Start-up Performance of the WPF and Silverlight Designer in Visual Studio 2010 Beta 2</title><link>http://blogs.msdn.com/ddperf/archive/2009/11/02/improving-the-start-up-performance-of-the-wpf-and-silverlight-designer-in-visual-studio-2010-beta-2.aspx</link><pubDate>Mon, 02 Nov 2009 18:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9916292</guid><dc:creator>David Berg</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/ddperf/comments/9916292.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ddperf/commentrss.aspx?PostID=9916292</wfw:commentRss><description>&lt;P&gt;I wanted to let you know about a last minute change that went into VS 2010 Beta 2 that you can use to improve the startup performance for the WPF and Silverlight Designer.&amp;nbsp; The change went in late and it was a little risky, so we decided to leave it off until we had a chance to do some more testing with it.&amp;nbsp; You can turn the change on yourself via a registry key.&amp;nbsp; We expect the change will be on all the time in the final product, so changing the registry key is strictly a Beta 2 issue.&lt;/P&gt;
&lt;P&gt;You can read more about it here: &lt;A href="http://social.msdn.microsoft.com/Forums/en-US/vswpfdesigner/thread/4511d43f-c134-4329-a970-e374252a620e"&gt;http://social.msdn.microsoft.com/Forums/en-US/vswpfdesigner/thread/4511d43f-c134-4329-a970-e374252a620e&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;If you have any feedback on how this works (or doesn't work) for you, please let me know.&amp;nbsp; You can contact me at &lt;A href="mailto:DevPerf@Microsoft.com"&gt;DevPerf@Microsoft.com&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Regards,&lt;/P&gt;
&lt;P&gt;Dave&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9916292" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ddperf/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Beta/default.aspx">Beta</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Sliverlight/default.aspx">Sliverlight</category></item><item><title>VS2010 Performance and Bad Video Drivers/Hardware</title><link>http://blogs.msdn.com/ddperf/archive/2009/10/29/vs2010-performance-and-bad-video-drivers-hardware.aspx</link><pubDate>Fri, 30 Oct 2009 05:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9915126</guid><dc:creator>David Berg</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ddperf/comments/9915126.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ddperf/commentrss.aspx?PostID=9915126</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;We’ve received a few performance complaints around Visual Studio 2010 (Beta 2) performance that can be traced to old video drivers or GPU virtualization issues.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;If you’re seeing slow / broken screen updates verify you have the latest drivers for your system. If this doesn’t resolve your rendering issues, you may be able to work around the problem by forcing software emulation mode by changing one registry key:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.5in"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;[HKEY_CURRENT_USER\Software\Microsoft\Avalon.Graphics]&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.5in"&gt;&lt;FONT face=Calibri size=3&gt;"DisableHWAcceleration"=dword:00000001&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;As you can probably guess, this can be undone with:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.5in"&gt;&lt;FONT face=Calibri size=3&gt;[HKEY_CURRENT_USER\Software\Microsoft\Avalon.Graphics]&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.5in"&gt;&lt;FONT face=Calibri size=3&gt;"DisableHWAcceleration"=dword:00000000&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;If you have these issues, please, let me know by either posting here or preferably by e-mailing &lt;/FONT&gt;&lt;A href="mailto:DevPerf@Microsoft.com"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;DevPerf@Microsoft.com&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; with details about the problems you are/were seeing.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;(When you e-mail, please run DXDIAG first and attach the DXDIAG.TXT file.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This will give us a lot of information about your system, including what drivers you’re running.)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;We’re very interested in finding any hardware/software incompatibilities we might have missed and getting them cleaned up. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;If you do find you need to use software emulation, and then get new drivers or hardware later, don’t forget to switch software emulation back off so you can benefit from the improved performance.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Note that this will impact all WPF applications on the system, not just Visual Studio.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&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=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Regards,&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Dave Berg&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Developer Division Performance Team&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9915126" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ddperf/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Beta/default.aspx">Beta</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>Tell us about VS2010 Beta2</title><link>http://blogs.msdn.com/ddperf/archive/2009/10/29/tell-us-about-vs2010-beta2.aspx</link><pubDate>Thu, 29 Oct 2009 21:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9914979</guid><dc:creator>David Berg</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/ddperf/comments/9914979.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ddperf/commentrss.aspx?PostID=9914979</wfw:commentRss><description>&lt;P&gt;&lt;FONT face="Times New Roman" size=3&gt;Last week we &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/jasonz/archive/2009/10/19/announcing-vs2010-net-framework-beta-2.aspx"&gt;&lt;FONT face="Times New Roman" size=3&gt;shipped Beta 2&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Times New Roman" size=3&gt; for broad distribution.&amp;nbsp; Many of you have already sent us comments and improvement suggestions (thanks!)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman" size=3&gt;At this point we are down to our final set of bug fixing, perf tuning, etc.&amp;nbsp; We’re very interested in your feedback so we can take action on it before we ship the final version.&amp;nbsp; To help make it easy, you can &lt;/FONT&gt;&lt;A href="https://mscuillume.smdisp.net/Collector/Survey.ashx?Name=D10G1"&gt;&lt;FONT face="Times New Roman" size=3&gt;take this simple survey&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Times New Roman" size=3&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center" align=center&gt;&lt;A href="https://mscuillume.smdisp.net/Collector/Survey.ashx?Name=D10G1"&gt;&lt;SPAN style="TEXT-DECORATION: none; text-underline: none"&gt;&lt;FONT face="Times New Roman" size=3&gt;&lt;IMG id=_x0000_i1025 title=image height=92 alt=image src="http://blogs.msdn.com/blogfiles/jasonz/WindowsLiveWriter/VS2010Beta2FeedbackSurvey_C49A/image_3.png" width=240 border=0&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman" size=3&gt;One thing in particular we are hearing a lot of feedback on is performance.&amp;nbsp; We are working hard on the next round of perf improvements.&amp;nbsp; You can supply your feedback through the survey.&amp;nbsp; When you give us your feedback, the more actionable you can make it the better.&amp;nbsp; We need to know what operations you are doing (like editing, debugging, etc), what kind of hardware you have (CPU, RAM, disk), and your hosting scenario (main machine, running in VM, terminal server, etc).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman" size=3&gt;Thanks in advance for your feedback!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman" size=3&gt;Dave&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman" size=3&gt;P.S. If you'd like to talk to me directly about your performance experience, you can reply here or e-mail us at &lt;A href="mailto:DevPerf@Microsoft.com"&gt;DevPerf@Microsoft.com&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman" size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9914979" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ddperf/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>Visual Studio 2010 Hardware Requirements</title><link>http://blogs.msdn.com/ddperf/archive/2008/12/23/visual-studio-2010-hardware-requirements.aspx</link><pubDate>Wed, 24 Dec 2008 10:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9251566</guid><dc:creator>David Berg</dc:creator><slash:comments>16</slash:comments><comments>http://blogs.msdn.com/ddperf/comments/9251566.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ddperf/commentrss.aspx?PostID=9251566</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Soma’s been talking about the upcoming Visual Studio 2010 release on his &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/somasegar/default.aspx"&gt;&lt;FONT face=Calibri size=3&gt;blog&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, which means I’m starting to get questions about what type of hardware you’re going to need to run VS2010 on.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Unfortunately, I can’t give you an official answer yet (other than to say, it depends on what you’re doing – obviously building small apps with one of the Express versions of Visual Studio won’t require the same resources as a multi-million line app using full blown Visual Studio Team System with lots of third party add-ins).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;What I can do is help put some of the things we’ve said about Visual Studio 2010 into context, to maybe help you make some better hardware decisions today:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;1)&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&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;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Memory – we’re trying to make VS2010 as frugal as we can here in order to run in as little memory as possible; however, we’re also adding a lot of functionality, and systems with more memory do tend to perform much better.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;So the general rule of buying systems still applies – spring for as much memory as you can afford.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It’s hard to have too much memory, at a minimum you want to make sure that you’re not paging.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;That said, there’s very little benefit to making a text editor 64 bit (and lots of reasons not to), so anything over 4GB is likely to be wasted (unless you’re running or writing apps that need more).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.75in; mso-add-space: auto"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&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.75in; TEXT-INDENT: -0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;2)&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&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;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;CPU – modern CPUs with their larger caches and tuned instruction pipelines tend to perform much better than one’s from just a few years ago (see our &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/ddperf/archive/2008/06/18/lessons-from-the-test-lab-investigating-a-pleasant-surprise.aspx"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;blog&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If you’re going to do multi-threaded programming, you’ll want at least a dual core processor (and with the new &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/concurrency/default.aspx"&gt;&lt;FONT face=Calibri size=3&gt;Parallel Computing&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; support in VS 2010, you &lt;U&gt;will&lt;/U&gt; want to do multi-threaded programming).&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.75in; TEXT-INDENT: -0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;3)&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&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;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;GPU – VS2010 will leverage WPF heavily to create richer editing and visualizations, so a decent GPU that supports at least DX9 is highly recommended (DX10 is preferred, but requires Vista).&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.75in; TEXT-INDENT: -0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;4)&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&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;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Disk – If you’re building a large project or working with a large database, a large high-speed disk is pretty important.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;For large projects, you can often benefit by spreading your work across multiple disk spindles.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;At an extreme, putting your tools on one drive, your source code on another, and your object files on a third drive allows the three major sources of disk IO in building a project to be carried out independently of each other.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If you have to use a slower disk (e.g. a notebook) then be sure to get lots of memory.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Also keep in mind that modern hard drives tend to have more built in caching, so the same speed drive bought recently will likely outperform one bought a few years ago.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;So now that I’ve given you my thoughts on what hardware Visual Studio 2010 will need, what are your thoughts? &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;What kind of hardware are you developing on today, and what do you expect to be using in the next couple years?&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;What are your expectations on how we should be leveraging your hardware to create a productive development environment?&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9251566" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ddperf/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Hardware/default.aspx">Hardware</category></item><item><title>Lessons from the test lab: investigating a pleasant surprise</title><link>http://blogs.msdn.com/ddperf/archive/2008/06/18/lessons-from-the-test-lab-investigating-a-pleasant-surprise.aspx</link><pubDate>Thu, 19 Jun 2008 00:33:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8618468</guid><dc:creator>jonathanh</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/ddperf/comments/8618468.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ddperf/commentrss.aspx?PostID=8618468</wfw:commentRss><description>&lt;p&gt;This post describes our recent investigation into an interesting performance problem: benchmarks that we were surprised to find running significantly faster than we expected on new hardware. Along the way we discuss useful benchmarking tools, how to validate results, and why it pays to know exactly what hardware you're running on.&lt;/p&gt;  &lt;p&gt;This all started in our performance test lab. During the development of Visual Studio, each new build undergoes a suite of automated performance tests, running in a lab full of identical machines. These performance tests allow us to track Visual Studio's performance over time, and &lt;a href="http://blogs.msdn.com/ddperf/archive/2008/05/20/visual-studio-performance-testing-noise-is-enemy-1.aspx"&gt;detect performance regressions&lt;/a&gt; (when something gets unexpectedly worse). We recently added a batch of new machines in our lab, and that's when the fun started.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Pop Quiz: How Much Faster?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Old machine: dual-core Intel Pentium D 830 processor, running at 3 GHz, with 1 GB of RAM.&lt;/p&gt;  &lt;p&gt;New machine: quad-core Intel Xeon 5355 processor, running at 2.66 GHz, with 4 GB of RAM. &lt;/p&gt;  &lt;p&gt;Given the differences in the two hardware configurations above, how much faster would you expect the new machine to be when running a Visual Studio performance test? Lower than, same as, twice, three times or four times the performance of the older machine? &lt;/p&gt;  &lt;p&gt;One line of reasoning might look at the relative clock frequencies of the processors on the two machines. This might lead you to expect the newer processor cores to perform slower than the older cores, since their clock frequency is 11% lower. By this reasoning you might conclude that single-threaded applications would perform poorly on the new machine. &lt;/p&gt;  &lt;p&gt;Another line of reasoning would factor in the number of cores in the two systems. Since the new machine has twice the number of cores, you might expect it to have about twice the performance on multi-threaded applications. (If you also accounted for the lower clock frequency, you'd end up with a figure of 1.78 times the performance of the old machine.) &lt;/p&gt;  &lt;p&gt;A third approach might estimate the impact of RAM size. We’ve quadrupled the amount of RAM, so maybe any benchmarks that used to page to disk can now execute entirely in memory and hence will be orders of magnitude faster. [We'll cheat here and tell you that our benchmarks are generally not memory constrained]. &lt;/p&gt;  &lt;p&gt;So far, all these options seem plausible. What's your guess? &lt;/p&gt;  &lt;p&gt;What we naively expected to find lay somewhere between the first two lines of reasoning - that the new machines would be 1-2 times faster than the old machines, depending on the particular benchmark.&lt;/p&gt;  &lt;p&gt;What we actually found is that many of our single-threaded CPU-bound benchmarks run about &lt;strong&gt;twice as fast&lt;/strong&gt; on the new machine, while scalable multi-threaded benchmarks run up to &lt;strong&gt;four times as fast&lt;/strong&gt;. This was a pleasant surprise, because it significantly reduces the overall time to run all the benchmarks. But it did leave us wondering why we were getting much greater speedups than our naive explanations would suggest. The rest of this post explores that question.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Using WinSAT and SPEC to Validate Benchmark Results&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;To make sure this wasn't a fluke result, we used the &lt;a href="http://msdn.microsoft.com/en-us/library/ms737378(VS.85).aspx"&gt;Windows System Assessment Tool&lt;/a&gt; (winsat.exe). This is a built-in tool that can give quickly give a representative view of a machine's performance. It is multi-threaded, taking full advantage of all the cores on a machine. Here are the WinSAT CPU results: &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="422" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="189"&gt;&lt;strong&gt;Benchmark&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="89"&gt;&lt;strong&gt;Old Machine&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="95"&gt;&lt;strong&gt;New Machine&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="47"&gt;&lt;strong&gt;Speedup&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="189"&gt;CPU – Compression (MB/s)&lt;/td&gt;        &lt;td valign="top" width="89"&gt;70.5&lt;/td&gt;        &lt;td valign="top" width="95"&gt;262.0&lt;/td&gt;        &lt;td valign="top" width="47"&gt;3.7&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="189"&gt;CPU – Encryption (MB/s)&lt;/td&gt;        &lt;td valign="top" width="89"&gt;52.3&lt;/td&gt;        &lt;td valign="top" width="95"&gt;139.3&lt;/td&gt;        &lt;td valign="top" width="47"&gt;2.7&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;We also wanted to validate our results against other real-world benchmarks. For this we turned to the &lt;a href="http://www.spec.org/"&gt;SPEC website&lt;/a&gt;. SPEC produces a series of benchmark suites, plus a very formal process that ensures results are reproducible and can fairly be applied across different manufacturers. More importantly for our purposes, SPEC posts all reported benchmark results on their web site. You won’t always be able to find your exact machine listed, but after using results from a tool like CPU-Z you can generally find results from a machine with the same CPU configuration and clock speed. &lt;/p&gt;  &lt;p&gt;We used the &amp;quot;CINT2006&amp;quot; benchmarks – this is a widely-used benchmark suite concentrating on integer performance. We compared results for both CINT2006, which is a good test of single-threaded performance, and CINT2006 Rate, which tests the ability of a system to execute multiple copies of CINT2006, and is therefore a better test of multi-threaded performance. For two representative machines that are similar to our old and new hardware, here are the results:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="422" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="189"&gt;&lt;strong&gt;Benchmark&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="89"&gt;&lt;strong&gt;Old Machine&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="95"&gt;&lt;strong&gt;New Machine&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="47"&gt;&lt;strong&gt;Speedup&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="189"&gt;CINT2006&lt;/td&gt;        &lt;td valign="top" width="89"&gt;9.85&lt;/td&gt;        &lt;td valign="top" width="95"&gt;15.5&lt;/td&gt;        &lt;td valign="top" width="47"&gt;1.6&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="189"&gt;CINT2006 Rate&lt;/td&gt;        &lt;td valign="top" width="89"&gt;18.0&lt;/td&gt;        &lt;td valign="top" width="95"&gt;44.4&lt;/td&gt;        &lt;td valign="top" width="47"&gt;2.5&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;The WinSAT and SPEC results confirm that the new machines are much faster than our naive expectations, even for benchmarks such as CINT2006 that cannot take advantage of the extra cores. So what were we missing? &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Using CPU-Z to Examining Machine Configurations&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;To answer this, we need a deeper understanding of the configurations of the two systems. &lt;/p&gt;  &lt;p&gt;Unfortunately, finding detailed configuration information isn't always straightforward. For example, we know that level two (L2) cache size impacts performance, but Windows doesn't report it, and it's not easy to reboot into the BIOS to take a look at cache size when the machine is located in a remote test lab. This is where machine reporting tools like &lt;a href="http://www.cpuid.com/cpuz.php"&gt;CPU-Z&lt;/a&gt; come in. You can run CPU-Z remotely on an unknown machine and get back a nicely formatted HTML report showing exactly what the hardware is. Here's a deeper look at our old and new systems:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="408" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="155"&gt;&lt;strong&gt;Feature&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="118"&gt;&lt;strong&gt;Old Machine&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="141"&gt;&lt;strong&gt;New Machine&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="155"&gt;CPU name&lt;/td&gt;        &lt;td valign="top" width="118"&gt;Pentium D 830          &lt;br /&gt;(“Smithfield”)&lt;/td&gt;        &lt;td valign="top" width="141"&gt;Xeon X5355          &lt;br /&gt;(“Clovertown”)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="155"&gt;CPU speed&lt;/td&gt;        &lt;td valign="top" width="118"&gt;3.00 GHz&lt;/td&gt;        &lt;td valign="top" width="141"&gt;2.66 GHz&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="155"&gt;Number of cores&lt;/td&gt;        &lt;td valign="top" width="118"&gt;2&lt;/td&gt;        &lt;td valign="top" width="141"&gt;4&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="155"&gt;L1 cache (per core)&lt;/td&gt;        &lt;td valign="top" width="118"&gt;16 KB&lt;/td&gt;        &lt;td valign="top" width="141"&gt;32 KB&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="155"&gt;L2 cache (total)&lt;/td&gt;        &lt;td valign="top" width="118"&gt;2 MB&lt;/td&gt;        &lt;td valign="top" width="141"&gt;8 MB&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="155"&gt;System RAM&lt;/td&gt;        &lt;td valign="top" width="118"&gt;1 GB DDR2&lt;/td&gt;        &lt;td valign="top" width="141"&gt;4 GB DDR2&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;b&gt;Using BCDEdit to Disable Cores&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Now we can try to tease out the relative impacts of the many changes from the old configurations the new configurations. The first and easiest step is to disable two out of four cores on a new machine, to enable a fairer &amp;quot;apples to apples&amp;quot; comparison of cores between old and new machines.&lt;/p&gt;  &lt;p&gt;To do this we used the Windows BCDEdit tool, which replaces the old method of editing BOOT.INI by hand. Here we were particularly concerned with the order in which cores are disabled. This is important because the 8 MB of L2 cache in the Xeon “Clovertown” processors is divided: two of the four cores share 4 MB, and the other two cores share the other 4 MB. To keep our benchmark comparisons as fair as possible, we wanted to make sure that only one of the L2 caches was in use after disabling two cores. We used CPU-Z again after rebooting to confirm this.&lt;/p&gt;  &lt;p&gt;Now we were in a position to do a fairer “cores to cores” comparison between the old and new machines. Here's a summary from WinSAT: &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="422" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="189"&gt;&lt;strong&gt;Benchmark&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="89"&gt;&lt;strong&gt;Old Machine&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="95"&gt;&lt;strong&gt;New (2 cores)&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="47"&gt;&lt;strong&gt;Speedup&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="189"&gt;CPU – Compression (MB/s)&lt;/td&gt;        &lt;td valign="top" width="89"&gt;70.5&lt;/td&gt;        &lt;td valign="top" width="95"&gt;131.9&lt;/td&gt;        &lt;td valign="top" width="47"&gt;1.9&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="189"&gt;CPU – Encryption (MB/s)&lt;/td&gt;        &lt;td valign="top" width="89"&gt;52.3&lt;/td&gt;        &lt;td valign="top" width="95"&gt;69.7&lt;/td&gt;        &lt;td valign="top" width="47"&gt;1.3&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="189"&gt;Memory Bandwidth (MB/s)&lt;/td&gt;        &lt;td valign="top" width="89"&gt;4,041&lt;/td&gt;        &lt;td valign="top" width="95"&gt;3,360&lt;/td&gt;        &lt;td valign="top" width="47"&gt;0.8&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Now we can really see the advantage of the latest processors – on a core-for-core basis, they are 1.3-1.9x faster on the CPU-intensive WinSAT benchmarks, despite having lower clock frequencies.&lt;/p&gt;  &lt;p&gt;Good, now on to the next… wait a second. Look at that memory bandwidth result. Our new machines have &lt;i&gt;less&lt;/i&gt; memory bandwidth than the old machines? That doesn't look right: although memory performance hasn't been keeping pace with CPU speeds, it &lt;i&gt;has&lt;/i&gt; been improving over time. Compared to a three-year-old machine, we'd expect these new machines to have slightly better memory bandwidth, and definitely not worse. What gives?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Memory Channels&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A primary limiting factor to memory bandwidth is the number of memory channels that are in use. And this turns out to be the problem here: although the new machines have four memory channels and eight memory slots, only two of those slots are filled, because the vendor supplied us with two 2 GB memory modules per machine. This maximizes future expansion potential – we can take the machine up to 16 GB without throwing away any of our initial investment in memory. But in the meantime using two memory slots limits us to two memory channels in use. If instead we had four 1 GB memory modules we'd have four memory channels in use, improving memory interleaving from 2:1 to 4:1 and increasing memory bandwidth. To confirm this, we populated four memory slots on one of the new machines (going from 4 GB to 8 GB) and reran WinSAT:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="422" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="189"&gt;&lt;strong&gt;Benchmark&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="89"&gt;&lt;strong&gt;2 channels&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="95"&gt;&lt;strong&gt;4 channels&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="47"&gt;&lt;strong&gt;Speedup&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="189"&gt;Memory Bandwidth (MB/s)&lt;/td&gt;        &lt;td valign="top" width="89"&gt;3,360&lt;/td&gt;        &lt;td valign="top" width="95"&gt;4,134&lt;/td&gt;        &lt;td valign="top" width="47"&gt;1.2&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;b&gt;Conclusions&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;It's always possible to run more experiments to further isolate and explain benchmark results, but after a while you reach a point of diminishing returns. With the results we have so far, we can already draw some useful conclusions. &lt;/p&gt;  &lt;p&gt;The first conclusion is that our naive explanations greatly underestimated just how much better the newer processors are at executing real benchmarks, despite their slower clock speeds. The results from WinSAT and SPEC clearly show this, with core-to-core performance that is 1.3-1.9x faster on the new machines, depending on the benchmark. &lt;/p&gt;  &lt;p&gt;This is perhaps the most important lesson for developers to learn: clock speeds are no longer a good indicator of true performance. Although clock speeds have plateaued, processor designers continue to find ways to make each new generation significantly faster than the last. In our case, the old machines have Pentium D processors (“Smithfield”), while the new machines have Xeon 5-series processors (“Clovertown”).&amp;#160; And while the newer processors have slightly slower clock speeds, their micro-architecture executes more instructions per clock cycle. &lt;/p&gt;  &lt;p&gt;The second conclusion is that it's very hard to perform fair comparisons. The two machines have several configuration differences, including clock frequency, number of cores, core micro-architecture, cache sizes, bus speed, memory size and speed, and so on. We showed an example of isolating the effect of just one of these differences, the number of cores, using the BCDEdit tool. Isolating the effect of every single difference would require much more effort.&lt;/p&gt;  &lt;p&gt;Indeed, some of these differences are interrelated, and it is hard to change one without affecting another. For example, CPU architects make their micro-architecture design decisions based on cache sizes. Now imagine a hypothetical experiment that tried to isolate the effect of L2 cache size by giving each core just 1 MB of cache. This would be especially hard on the newer processors, which have been designed on the assumption that they have 2 MB of L2 cache per core&lt;a href="file://tkzaw-pro-13/#_ftn1_6097" name="_ftnref1_6097"&gt;[1]&lt;/a&gt;. In trying to perform a fairer comparison, we would have actually handicapped one system!&lt;/p&gt;  &lt;p&gt;Our final conclusion is that it truly pays to benchmark and compare systems. In our case, the simplest possible benchmark (WinSAT) showed an unexpected memory bandwidth loss, which we then traced back to a machine mis-configuration. So that was the final pleasant surprise: if we hadn't gotten curious about why the new machines were so much faster, we would never have found that they could be faster still!&lt;/p&gt;  &lt;p&gt;David Berg    &lt;br /&gt;Sunny Egbo     &lt;br /&gt;Jonathan Hardwick     &lt;br /&gt;Peter Okonski&lt;/p&gt;  &lt;hr align="left" width="33%" size="1" /&gt;  &lt;p&gt;&lt;a href="file://tkzaw-pro-13/#_ftnref1_6097" name="_ftn1_6097"&gt;[1]&lt;/a&gt; Because two cores share a single 4 MB L2 cache on the Clovertown processors, the exact size of the cache that is used by each core is not fixed at 2 MB per core; the use will vary during program execution. Cache hungry threads might get more of the cache, while less cache hungry threads get less. Even when two cache hungry threads run on the two cores, their memory hotspots are asynchronous; thus, the net effect is that each thread gets more of the cache when they need it and less when they don’t need it.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8618468" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ddperf/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Performance+testing/default.aspx">Performance testing</category></item><item><title>Visual Studio Performance Testing -- Noise is Enemy #1</title><link>http://blogs.msdn.com/ddperf/archive/2008/05/20/visual-studio-performance-testing-noise-is-enemy-1.aspx</link><pubDate>Tue, 20 May 2008 03:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8520260</guid><dc:creator>MarkBFriedman</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/ddperf/comments/8520260.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ddperf/commentrss.aspx?PostID=8520260</wfw:commentRss><description>&lt;P class=MsoNormal&gt;Performance testing is essential to our quest to make Visual Studio provide a highly responsive user experience.&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;We do performance testing early and often. Before a new feature is checked into the main branch, a test build is created, and 100 to 200 tests are run to assess performance. These tests include scenarios for start-up, debugging, project build, editor interactions, and much more.&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;This sounds like a lot of work. Well, it is. But there’s even more work that takes place before a single bit is tested. &lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;Here’s a brief summary of what we do. First, we work with Visual Studio product units (e.g., C#, debugger, XML editor, and about 30 others) to identify performance-sensitive user scenarios and to set response time goals for these scenarios. The product teams develop test cases for their scenarios. Our team, Developer Division Performance Engineering, reviews these tests to see if they meet certain acceptance criteria. Once a test has been accepted, it is incorporated into the division-wide suite that is used to assess if performance has degraded on a check-in. We call this a performance regression.&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;Of course, we need a test infrastructure as well. We have a hundred machines dedicated to performance testing. We also have automation software that runs tests, analyzes the results, and notifies product teams of performance regressions. Initially, our perspective was that automating performance testing has unique requirements that demand a unique infrastructure. Now, we recognize that performance testing has much in common with functional testing. Further, we want to use features such as load testing and test case management that are part of Visual Studio Team Test, a direction that is being pursued by Developer Division as a whole (in part to “dog food” Visual Studio features).&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;During a performance test, we collect a large number of PerfMon counters, CPU profiles, ETW traces, and more. However, the decision whether there is a regression (and hence if the changes can be checked-in) currently depends on just two metrics – CPU Time and Elapsed Time. If either of these is “significantly” higher than they are supposed to be, the check-in is rejected. (We deal with memory and I/O in other ways.)&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;But what constitutes significantly higher CPU Time and Elapsed Time? This question has been a source of animated discussions with developers eager to check-in their changes.&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;In the past, we used an adaptive but somewhat opaque approach to establish regression thresholds. The adaptive part allowed us to automatically reset performance baselines for regression thresholds, but it was done in a complex way. As a result, there were many times when developers contested that there was a performance regression because there was confusion about the performance baseline. One of the lessons we learned is that effective performance testing requires a transparent methodology for setting regression thresholds.&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;Our latest approach is to periodically set regression thresholds based on the results of multiple runs of the same baseline build. This provides a clear basis for comparing performance results on check-in.&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;This approach has another advantage as well – it allows us to eliminate certain sources of noise. For example, variations in the chip sets used on our test machines caused some machines to have very long I/O times (in excess of 20% longer). As a result, we developed a machine acceptance procedure whereby we eliminate these anomalous machines. There are concerns about tests as well. For example, some tests use very little CPU and so a seemingly significant increase in CPU Time can be due to very small changes in the way context switching takes place during the run. Indeed, even for CPU bound work, we have noticed CPU Time can vary by 5% to 10% due to changes in the way context switching occurs.&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;These are all examples of test noise.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Properly addressing test noise is critical to the effectiveness of the performance engineering process. Nothing is more frustrating to a developer than to spend several days pursuing a performance bug that turns out to be noise.&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;Test noise is any characteristic of a test that makes it so that CPU Time and/or Elapsed Time vary so much that we can’t reliably determine if performance has improved or degraded. To assess whether a test is too noisy, we run it multiple times on the same machine with a baseline build, and see if we get similar results. By similar, we mean that results do not vary more than 10% from the mean of the run.&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;Below are results from a test with little noise for CPU Time. The horizontal axis shows the run, and the vertical axis is CPU Time in milliseconds. The asterisks are test executions or iterations that are done repeatedly within a run. In most cases, we do not include the first iteration because it often differs a great deal from the others due to initialization effects. (Of course, for start-up scenarios, we only use the first iteration!)&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;&lt;IMG style="WIDTH: 560px; HEIGHT: 420px" height=420 src="http://5l3vgw.bay.livefilestore.com/y1pzbrt-s_HGnnVxDeLI_bb0hHTHsWSQwj4-NLU5DhVrHxp2lisCpXA7_SlBxUDKNasPS2bZdp5Z__lOEJfbWlL6A/noisytest-image001.gif" width=560 align=baseline vspace=3 mce_src="http://5l3vgw.bay.livefilestore.com/y1pzbrt-s_HGnnVxDeLI_bb0hHTHsWSQwj4-NLU5DhVrHxp2lisCpXA7_SlBxUDKNasPS2bZdp5Z__lOEJfbWlL6A/noisytest-image001.gif"&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;We look for several things to see if a test is too noisy. As in the figure above, we want all of the performance counters to lie within the range of plus or minus 10% of the mean. Also, we look for a fairly even scatter of performance counters below and above the mean, but with no discernable pattern. If there is a pattern, it suggests that something is systematically biasing the test and needs to be fixed.&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;Now, let’s look at some noisy tests. One case is that the test may actually be addressing more than one scenario with very different performance characteristics. Here’s an example of a test that appears to have this multiple scenario character:&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;&lt;IMG style="WIDTH: 560px; HEIGHT: 420px" height=420 src="http://5l3vgw.bay.livefilestore.com/y1pzbrt-s_HGnnEmoOhaPSlOjwjp2ZqcqX-lFuuzFzYXHKkrvTaOHrE7Ht60uuD0nmiDGVDWMG_J9CCJkRDLhfN-w/noisytest-image002.gif" width=560 align=baseline vspace=3 mce_src="http://5l3vgw.bay.livefilestore.com/y1pzbrt-s_HGnnEmoOhaPSlOjwjp2ZqcqX-lFuuzFzYXHKkrvTaOHrE7Ht60uuD0nmiDGVDWMG_J9CCJkRDLhfN-w/noisytest-image002.gif"&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;Another possibility is that the test may occasionally do something that takes a lot longer, or the test may be so short that it is subject to intermittent activities occurring in the OS (e.g., lazy writes) or the CLR (e.g., garbage collection). Here’s an example of a test result that appears to have this kind of problem:&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;&lt;IMG style="WIDTH: 560px; HEIGHT: 420px" height=420 src="http://5l3vgw.bay.livefilestore.com/y1pzbrt-s_HGnkae2XNCAk38p-4RsGAHecjTZHm5JVeL5Jyl_Lz0DEjpCJqQt69Qwwg9yUacbI_tGte61y8ghZzMg/noisytest-image003.gif" width=560 align=baseline vspace=3 mce_src="http://5l3vgw.bay.livefilestore.com/y1pzbrt-s_HGnkae2XNCAk38p-4RsGAHecjTZHm5JVeL5Jyl_Lz0DEjpCJqQt69Qwwg9yUacbI_tGte61y8ghZzMg/noisytest-image003.gif"&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;In this case, there are two extreme values. At first glance, it may seem that there is another problem as well since several of the iterations have values below the “mean-10%” line. However, this is an artifact of having two large values that make the mean larger.&lt;/P&gt;
&lt;P class=MsoNormal&gt;It’s hard work to do all of this. But performance testing was central to performance gains in Visual Studio 2008 compared with previous releases. And, with the help of changes in our handling of test noise, more performance improvements are on the way. &lt;/P&gt;
&lt;P class=MsoNormal&gt;We will share the best practices for performance testing that we develop for Visual Studio (and other Developer Division products) with our customers. Longer term, we hope to incorporate these best practices into Visual Studio tools so that you can be more effective with your performance testing.&lt;/P&gt;
&lt;P class=MsoNormal mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;by Joe Hellerstein, Ph.D.&lt;/P&gt;
&lt;P class=MsoNormal&gt;Senior Architect, Developer Division Performance Engineering&lt;/P&gt;
&lt;P class=MsoNormal&gt;Joe Hellerstein is the author of &lt;EM&gt;Feedback Control of Computer Systems&lt;/EM&gt;, published by Wiley-IEEE Press in 2004. He had a long and distinguished career at IBM Research prior to joining Microsoft in 2006.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8520260" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ddperf/archive/tags/Performance+Engineering/default.aspx">Performance Engineering</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Performance+testing/default.aspx">Performance testing</category></item><item><title>VS2008 SP1 and .NET FX Beta Performance Improvements</title><link>http://blogs.msdn.com/ddperf/archive/2008/05/12/vs2008-sp1-and-net-fx-beta-performance-improvements.aspx</link><pubDate>Mon, 12 May 2008 19:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8495292</guid><dc:creator>David Berg</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/ddperf/comments/8495292.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ddperf/commentrss.aspx?PostID=8495292</wfw:commentRss><description>&lt;FONT face=Calibri&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;You probably already saw &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/somasegar/archive/2008/05/12/visual-studio-2008-and-net-fx-3-5-sp1-beta-available-now.aspx" mce_href="http://blogs.msdn.com/somasegar/archive/2008/05/12/visual-studio-2008-and-net-fx-3-5-sp1-beta-available-now.aspx"&gt;&lt;FONT size=3&gt;Soma’s Blog&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt; on the &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/somasegar/archive/2008/05/12/visual-studio-2008-and-net-fx-3-5-sp1-beta-available-now.aspx" mce_href="http://blogs.msdn.com/somasegar/archive/2008/05/12/visual-studio-2008-and-net-fx-3-5-sp1-beta-available-now.aspx"&gt;&lt;FONT size=3&gt;Beta for Visual Studio 2008 and .NET FX 3.5 SP1&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If you can, please download and &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx" mce_href="http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx"&gt;&lt;FONT size=3&gt;install the Beta&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt; quickly (be sure to read the readme for &lt;/FONT&gt;&lt;A href="http://go.microsoft.com/fwlink/?LinkID=110456" mce_href="http://go.microsoft.com/fwlink/?LinkID=110456"&gt;&lt;FONT color=#0000ff size=3&gt;Visual Studio Professional&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt; and for &lt;/FONT&gt;&lt;A href="http://go.microsoft.com/fwlink/?LinkId=115293" mce_href="http://go.microsoft.com/fwlink/?LinkId=115293"&gt;&lt;FONT color=#0000ff size=3&gt;Visual Studio Team System&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt; first).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The sooner we get your feedback, the sooner we can act on it.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Visual Studio 2008 SP1 is packed with new features, major updates to frameworks, and fixes.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;So much so that with everything installed (including x64 and ia86 support) you would need to download and install about 1GB of updates.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Which brings us to the first and most important performance improvement – you only download what you need!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;VS2008 SP1 includes a new installation / update engine.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You just download the installer, which then analyzes your system installation, and only downloads the components you need.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Thus a default installation of VS2008 Team System will only download about 600mb (and less still if you don’t have all the default components installed). &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Download performance will vary substantially based on your internet connection and network contention; however, it generally outperforms an IE file download, and will automatically restart in the middle if your network connection drops out and comes back.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;(However, if you cancel the install, it will restart at the beginning.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The new installation engine is also much faster than VS2005 SP1, installing twice as much updates in less than half the time (typical install time is about an hour, if you’re running Vista RTM, you’ll want to upgrade to Vista SP1 before installing VS 2008 SP1, it’s much faster).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;(The Express versions of VS SP1 are re-releases, not patches; however, they still use the intelligent patching/download logic for .NET FX and other components).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Here are some of the other performance improvements in Visual Studio 2008 SP1 and .NET FX 3.5 SP1 (includes .NET FX 2.0 SP2 and .NET FX 3.0 SP2):&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Editing:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Improvements in the WPF designer including a (10-20%) improvement in startup time.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Improvements working with ASPX forms, Java Script, and web site building.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Some parts previously released as &lt;/FONT&gt;&lt;A href="http://support.microsoft.com/kb/946581" mce_href="http://support.microsoft.com/kb/946581"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;KB946581&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Build:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Improve Visual Basic build performance for projects that contain a large number of XML comments in a single file (such as a designer-generated dataset or web reference). Previously released as &lt;/FONT&gt;&lt;A href="http://support.microsoft.com/kb/946344" mce_href="http://support.microsoft.com/kb/946344"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;KB946344&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;CLR:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo3"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Improved working set and startup times for NGEN’d images (varies substantially by app).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo3"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Support for Address Space Layout Randomization (ASLR) on Vista and WS 2008.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Uses fast kernel mode virtual base address relocation to improve memory layout and security. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Debugger:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo3"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Improvements in symbol and source downloading and the ability to cancel symbol download from slow symbol servers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo3"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Fix to a performance problem in the debugger when you are stepping through source code that is downloaded from Microsoft Reference Source Server that was caused by downloading the source files again for each breakpoint. Previously released as &lt;/FONT&gt;&lt;A href="http://support.microsoft.com/kb/944899" mce_href="http://support.microsoft.com/kb/944899"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;KB944899&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;. &lt;SPAN style="COLOR: red"&gt;(Note this fix is included in SP1.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;To improve the SP1 install experience, please uninstall this KB before installing the SP.)&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Team Foundation Server (TFS):&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;A href="http://blogs.msdn.com/bharry/archive/2008/04/28/team-foundation-server-2008-sp1.aspx" mce_href="http://blogs.msdn.com/bharry/archive/2008/04/28/team-foundation-server-2008-sp1.aspx"&gt;&lt;FONT face=Calibri size=3&gt;Brian Harry has already blogged&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; about some of the great things in this release.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Here’s what he said about performance and scalability improvements:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.75in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-list: l2 level1 lfo6; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .75in"&gt;&lt;SPAN lang=EN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; mso-ansi-language: EN; mso-bidi-font-size: 12.0pt"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt;# of projects per server&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt; - Constraints on the number of projects per server have been written about quite a bit.&amp;nbsp; In TFS 2008 SP1, we have made some important improvements.&amp;nbsp; To refresh your memory, the primary issue is that the size of the cache that the TFS client downloads is proportional to the number of projects on the server.&amp;nbsp; This cache can get very large (10s of MBs) and slow things down to the point that usability is affected.&amp;nbsp; The changes we have made for SP1 include: &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 1.25in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-list: l2 level2 lfo6; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 1.25in"&gt;&lt;SPAN lang=EN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'; mso-ansi-language: EN; mso-bidi-font-size: 12.0pt"&gt;&lt;SPAN style="mso-list: Ignore"&gt;o&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt;Only download metadata for projects a user has access to.&amp;nbsp; By only granting access to the projects a user needs, it will dramatically reduce the size of the metadata they download. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 1.25in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-list: l2 level2 lfo6; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 1.25in"&gt;&lt;SPAN lang=EN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'; mso-ansi-language: EN; mso-bidi-font-size: 12.0pt"&gt;&lt;SPAN style="mso-list: Ignore"&gt;o&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt;Implemented cache compaction to remove some stale data from the cache that is no longer used.&amp;nbsp; We have seen 30% or better improvements from this in some circumstances. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 1.25in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-list: l2 level2 lfo6; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 1.25in"&gt;&lt;SPAN lang=EN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'; mso-ansi-language: EN; mso-bidi-font-size: 12.0pt"&gt;&lt;SPAN style="mso-list: Ignore"&gt;o&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt;Improved the speed of the Connect To TFS experience when there are a large number of projects in the list.&amp;nbsp; We saw about an 80X improvement on one of our internal servers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.75in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-list: l2 level1 lfo6; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .75in"&gt;&lt;SPAN lang=EN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; mso-ansi-language: EN; mso-bidi-font-size: 11.0pt"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt;Improved syncing identities from Active Directory&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt; - Our tests show syncing a group with 200,000 users dropped from 69 minutes to about 10 minutes.&amp;nbsp; This can significantly reduce background overhead on a system with lots of users. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.75in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-list: l2 level1 lfo6; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .75in"&gt;&lt;SPAN lang=EN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; mso-ansi-language: EN; mso-bidi-font-size: 11.0pt"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt;Improved checkin concurrency&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt; - Checkins are globally serialized - meaning 2 checkins (overlapping or not) must be processed in order and the second must wait on the first to complete.&amp;nbsp; In SP1, we were able to both improve the overall speed of checkin and reduce the blocking.&amp;nbsp; The blocking period is now only about 1/3rd of the checkin time. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.75in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-list: l2 level1 lfo6; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .75in"&gt;&lt;SPAN lang=EN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; mso-ansi-language: EN; mso-bidi-font-size: 11.0pt"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt;tf branch /checkin&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt; - Creating new branches when they are large (ours are about 1,000,000 files) can be very time consuming.&amp;nbsp; We have created an option for creating a branch that is much faster.&amp;nbsp; tf branch /checkin creates the branch without first pending the changes and requiring a subsequent checkin operation.&amp;nbsp; The result is about a 10X improvement in branch creation speed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.75in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-list: l2 level1 lfo6; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .75in"&gt;&lt;SPAN lang=EN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; mso-ansi-language: EN; mso-bidi-font-size: 11.0pt"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt;Online index rebuilding&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt; - If you use SQL Enterprise with TFS, TFS will now rebuild indexes online allowing for less "downtime" for maintenance.&amp;nbsp; If you use SQL Standard (which comes with TFS), then you will still get offline index rebuilding and your TFS server will not be responsive during weekly maintenance jobs.&amp;nbsp; If your TFS database is small, it doesn't really matter but as it gets into the terra-bytes, online index rebuilds become a must. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.75in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-list: l2 level1 lfo6; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .75in"&gt;&lt;SPAN lang=EN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; mso-ansi-language: EN; mso-bidi-font-size: 11.0pt"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt;Team build support for very large checkins&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt; - In TFS 2008 and previous versions, a very large checkin (hundreds of thousands of files) would trigger an out of memory error in TFS Build and prevent CI builds from triggering.&amp;nbsp; The out of memory issue has been fixed in SP1 and all checkins should properly trigger builds. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.75in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-list: l2 level1 lfo6; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .75in"&gt;&lt;SPAN lang=EN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; mso-ansi-language: EN; mso-bidi-font-size: 11.0pt"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt;Faster security manager&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt; - We found an O(N^2) algorithm in the security manager for version control and have replaced it with an O(N) algorithm.&amp;nbsp; It will help version control performance across the board.&amp;nbsp; We found it on large Get operations (getting hundreds of thousands of files).&amp;nbsp; The change reduced the security manager time from 5-6 minutes to a few seconds.&amp;nbsp; The end result is that those gets were about twice as fast. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.75in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-list: l2 level1 lfo6; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .75in"&gt;&lt;SPAN lang=EN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; mso-ansi-language: EN; mso-bidi-font-size: 11.0pt"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt;tf get /remap&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt; - Kind of a complicated feature but dang handy if you need it.&amp;nbsp; This is a new option on tf get that is intended to be used when you want to switch your workspace from one branch to another in the same code base.&amp;nbsp; You first change the workspace mapping and then issue a tf get /remap.&amp;nbsp; Because a large percentage of the files in two related branches are frequently identical, this command optimizes for that.&amp;nbsp; Rather than downloading all the content, it will only download the things that are different between the two branches.&amp;nbsp; I can reduce the get of a very large workspace from 10's of minutes to a few seconds. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.75in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-list: l2 level1 lfo6; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list .75in"&gt;&lt;SPAN lang=EN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; mso-ansi-language: EN; mso-bidi-font-size: 11.0pt"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt;Much, much more...&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN style="FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"&gt; - This is just a taste of the performance improvements we've made.&amp;nbsp; As always, each release includes a roll up of performance improvements we've made for our own internal dogfooding of TFS.&amp;nbsp; This release is no different.&amp;nbsp; There are dozens of additional fixes that we've made to improve performance.&amp;nbsp; If your installation is very large, you should notice nice responsiveness improvements across the board.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Additionally, this release does include KB947551 that some of you asked about (&lt;SPAN style="mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;Improved right click to context menu performance on a project or solution in "Solution Explorer" with a large number of projects in TFS).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;WPF:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;We’ve made some substantial improvements in WPF performance.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Some of these you get for free by just installing SP1, others require you to take advantage of new components or options.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;See the &lt;/FONT&gt;&lt;A class="" href="http://blogs.msdn.com/jgoldb/archive/2008/05/15/what-s-new-for-performance-in-wpf-in-net-3-5-sp1.aspx" mce_href="http://blogs.msdn.com/jgoldb/archive/2008/05/15/what-s-new-for-performance-in-wpf-in-net-3-5-sp1.aspx"&gt;&lt;FONT face=Calibri size=3&gt;WPF Performance Blog&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; for all the details.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;SQL CE:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l5 level1 lfo2"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Up to an 80% improvement in server to client sync services in ADO.NET.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Visual Studio Data Professional:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l5 level1 lfo2"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Up to 5x faster (re)loading database projects (than VS2008 RTM).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l5 level1 lfo2"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Up to 2x faster importing an existing schema (than VS2008 RTM).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Known Performance Issues in Visual Studio 2008 SP1 that are still outstanding:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo1"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;We haven’t yet fully resolved some Web Editing issues where you may experience poor performance when typing in design view or during design/source view switch.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo1"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;In the new Data Entity support UndoDeleteProductEntity is slower than we’d like, we expect to fix it for RTM.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;For more information on .NET FX see &lt;/FONT&gt;&lt;A href="http://weblogs.asp.net/scottgu/" mce_href="http://weblogs.asp.net/scottgu/"&gt;&lt;FONT face=Calibri size=3&gt;ScottGu’s Blog&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;For more on Web Development tools in this release, see &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/webdevtools/archive/2008/05/09/visual-studio-2008-sp1-beta.aspx" mce_href="http://blogs.msdn.com/webdevtools/archive/2008/05/09/visual-studio-2008-sp1-beta.aspx"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;their team blog&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Of course, as mentioned before if you have any performance problems, we’d like to hear about them.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;For issues related to the Beta, please use the community forum: http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=2136&amp;amp;SiteID=1&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;For issues unrelated to the Beta, you have the usual choices:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo5"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;1)&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;You can log bugs on &lt;/FONT&gt;&lt;A href="http://connect.microsoft.com/visualstudio" mce_href="http://connect.microsoft.com/visualstudio"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;Connect&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; &lt;/SPAN&gt;Bugs logged there go directly into our bug tracking system and Connect provides a mechanism for communication, tracking, status, and other customers to comment.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo5"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;2)&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;You can e-mail the Performance Team directly at &lt;/FONT&gt;&lt;A href="mailto:DevPerf@Microsoft.com" mce_href="mailto:DevPerf@Microsoft.com"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;DevPerf@Microsoft.com&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo5"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;3)&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;You can post comments on this blog (you may need to &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/login.aspx?ReturnUrl=%2fddperf%2fdefault.aspx" mce_href="http://blogs.msdn.com/login.aspx?ReturnUrl=%2fddperf%2fdefault.aspx"&gt;&lt;FONT face=Calibri size=3&gt;sign-in first&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Best Regards,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;David Berg&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Senior Program Manager&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Developer Division Performance Engineering Team&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Microsoft Corporation&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8495292" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ddperf/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Service+Pack/default.aspx">Service Pack</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Beta/default.aspx">Beta</category><category domain="http://blogs.msdn.com/ddperf/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item></channel></rss>