<?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>Visual Studio Profiler Team Blog : tips</title><link>http://blogs.msdn.com/profiler/archive/tags/tips/default.aspx</link><description>Tags: tips</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Tip: VS2008 – Finding and Setting Properties (Right-Click)</title><link>http://blogs.msdn.com/profiler/archive/2008/09/22/tip-vs2008-finding-and-setting-properties-right-click.aspx</link><pubDate>Mon, 22 Sep 2008 20:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8961361</guid><dc:creator>profiler</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/profiler/comments/8961361.aspx</comments><wfw:commentRss>http://blogs.msdn.com/profiler/commentrss.aspx?PostID=8961361</wfw:commentRss><description>&lt;P&gt;The Visual Studio Profiler has many properties and options and this tip shows you where to find most of them. Future posts may cover some of the specific properties in more detail.&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=770 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=347&gt;&lt;STRONG&gt;Performance Session:&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/session_properties_4.jpg" mce_href="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/session_properties_4.jpg"&gt;&lt;IMG title=session_properties style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=482 alt=session_properties src="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/session_properties_thumb_1.jpg" width=247 border=0 mce_src="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/session_properties_thumb_1.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;Select an existing Performance Session in the Performance Explorer to see properties in the Properties Window. If the Properties Window is hidden:&amp;nbsp; &lt;BR&gt;Press ‘F4’ or go to &lt;BR&gt;‘View-&amp;gt;Properties Window’.&lt;/TD&gt;
&lt;TD class="" vAlign=top width=56&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=369&gt;&lt;STRONG&gt;Performance Report:&lt;/STRONG&gt;&lt;A href="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/report_properties_2.jpg" mce_href="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/report_properties_2.jpg"&gt; &lt;BR&gt;&lt;IMG title=report_properties style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px; BORDER-RIGHT-WIDTH: 0px" height=482 alt=report_properties src="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/report_properties_thumb.jpg" width=246 border=0 mce_src="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/report_properties_thumb.jpg"&gt;&lt;/A&gt; &lt;BR&gt;Select a Performance Report in the Performance Explorer to view many properties including Collection, ETW, General, Machine Information, Performance Counters, Process, Thread and Version Information.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Performance Session Properties (and Options):&lt;/STRONG&gt; &lt;BR&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width="100%" border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=200&gt;&lt;A href="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/session_properties_1_4.jpg" mce_href="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/session_properties_1_4.jpg"&gt;&lt;IMG title=session_properties_1 style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 5px 0px 0px; BORDER-RIGHT-WIDTH: 0px" height=160 alt=session_properties_1 src="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/session_properties_1_thumb_1.jpg" width=242 align=left border=0 mce_src="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/session_properties_1_thumb_1.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width="100%"&gt;To adjust Performance Session properties: 
&lt;OL&gt;
&lt;LI&gt;Right-click on the Performance Session (Performance1 in this example). &lt;/LI&gt;
&lt;LI&gt;Select ‘Properties’. &lt;/LI&gt;&lt;/OL&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;Properties for Performance1 are shown below. There are different categories of properties on the left (e.g. General, Launch, Sampling, …).&lt;BR&gt;&lt;A href="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/session_properties_2_2.jpg" mce_href="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/session_properties_2_2.jpg"&gt;&lt;IMG title=session_properties_2 style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=482 alt=session_properties_2 src="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/session_properties_2_thumb.jpg" width=600 border=0 mce_src="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/session_properties_2_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Performance Targets:&lt;/STRONG&gt;&lt;BR&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width="100%" border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=200&gt;&lt;A href="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/target_properties_1_2.jpg" mce_href="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/target_properties_1_2.jpg"&gt;&lt;IMG title=target_properties_1 style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=162 alt=target_properties_1 src="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/target_properties_1_thumb.jpg" width=242 border=0 mce_src="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/target_properties_1_thumb.jpg"&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD class="" vAlign=top width="100%"&gt;To adjust Performance Target properties: 
&lt;OL&gt;
&lt;LI&gt;Right-click on the Target (ConsoleApplication3 in this example). &lt;/LI&gt;
&lt;LI&gt;Select ‘Properties’. &lt;/LI&gt;&lt;/OL&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;Adjust the properties for the Performance Target as required. These properties do not often need to be changed, with the possible exception of the Instrumentation property ‘&lt;A href="http://blogs.msdn.com/profiler/archive/2008/07/08/excluding-small-functions-from-instrumentation.aspx" mce_href="http://blogs.msdn.com/profiler/archive/2008/07/08/excluding-small-functions-from-instrumentation.aspx"&gt;Exclude small functions from instrumentation&lt;/A&gt;’.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/target_properties_2_2.jpg" mce_href="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/target_properties_2_2.jpg"&gt;&lt;IMG title=target_properties_2 style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=388 alt=target_properties_2 src="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/target_properties_2_thumb.jpg" width=600 border=0 mce_src="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/target_properties_2_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Tools –&amp;gt; Options –&amp;gt; Performance Tools:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Some global options can be configured using the Visual Studio Options dialog, which is accessed via:&lt;BR&gt;Tools –&amp;gt; Options –&amp;gt; Performance Tools&lt;/P&gt;
&lt;P&gt;&lt;A href="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/tools_options_4.jpg" mce_href="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/tools_options_4.jpg"&gt;&lt;IMG title=tools_options style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=344 alt=tools_options src="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/tools_options_thumb_1.jpg" width=600 border=0 mce_src="https://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008ViewingandSettingProperties_10377/tools_options_thumb_1.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;That’s all the properties I can think of but I’m probably missing some still. Probably the most important aspect to this tip is to emphasize that right-clicking with the mouse is often the way to access important contextual information.&lt;/P&gt;
&lt;P&gt;[&lt;A href="http://blogs.msdn.com/colinth" mce_href="http://blogs.msdn.com/colinth"&gt;Colin Thomsen&lt;/A&gt;]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8961361" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/profiler/archive/tags/profiler/default.aspx">profiler</category><category domain="http://blogs.msdn.com/profiler/archive/tags/vs2008/default.aspx">vs2008</category><category domain="http://blogs.msdn.com/profiler/archive/tags/tips/default.aspx">tips</category></item><item><title>Tip: VS2008 - Understanding Performance Targets</title><link>http://blogs.msdn.com/profiler/archive/2008/07/18/tip-vs2008-understanding-performance-targets.aspx</link><pubDate>Fri, 18 Jul 2008 23:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8751436</guid><dc:creator>profiler</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/profiler/comments/8751436.aspx</comments><wfw:commentRss>http://blogs.msdn.com/profiler/commentrss.aspx?PostID=8751436</wfw:commentRss><description>&lt;A href="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/default_wizard_output_slnexplorer_2.png" mce_href="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/default_wizard_output_slnexplorer_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" border=0 alt=default_wizard_output_slnexplorer align=right src="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/default_wizard_output_slnexplorer_thumb.png" width=232 height=463 mce_src="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/default_wizard_output_slnexplorer_thumb.png"&gt;&lt;/A&gt; 
&lt;P&gt;If you have a solution that contains multiple projects it is important to know what the 'Targets' group in the Performance Explorer is used for. The &lt;A href="http://msdn.microsoft.com/en-us/library/ms182399.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms182399.aspx"&gt;PeopleTrax&lt;/A&gt; solution shown on the right has 4 projects, with 3 of them compiling to managed DLLs and 1 compiling to an executable.&lt;/P&gt;
&lt;P&gt;After running the Performance Wizard to create a Performance Session the Performance Explorer contains a single target as shown below.&lt;/P&gt;
&lt;P align=left&gt;&lt;A href="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/default_wizard_output_perfexplorer_2.png" mce_href="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/default_wizard_output_perfexplorer_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" border=0 alt=default_wizard_output_perfexplorer src="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/default_wizard_output_perfexplorer_thumb.png" width=211 height=142 mce_src="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/default_wizard_output_perfexplorer_thumb.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P align=left&gt;Only the project that compiles to an executable is listed in the 'Targets' folder (for other project types like websites it would include the default launch project). What about the other 3 projects? As this tip explains, it depends upon the type of profiling you wish to do.&lt;/P&gt;
&lt;P align=left&gt;&lt;STRONG&gt;Sampling&lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;With sampling there is no need to add the additional projects to your targets list. We do not modify assemblies when sampling and we will automatically attempt to collect data for any assemblies loaded by the PeopleTrax target. The only exception to this requirement is if you wish to collect data for multi-process scenarios and therefore need to launch multiple targets.&lt;/P&gt;
&lt;P align=left&gt;&lt;STRONG&gt;Instrumentation&lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;For instrumentation, if you wish to collect data for the additional projects they should be added to your targets list as follows:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV align=left&gt;In the Performance Explorer, right-click on the 'Targets' folder: &lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/add_target_project_rightclick_2.png" mce_href="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/add_target_project_rightclick_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" border=0 alt=add_target_project_rightclick src="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/add_target_project_rightclick_thumb.png" width=244 height=136 mce_src="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/add_target_project_rightclick_thumb.png"&gt;&lt;/A&gt; &lt;BR&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV align=left&gt;Choose 'Add Target Project' to display a dialog: &lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/add_target_project_dialog_2.png" mce_href="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/add_target_project_dialog_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" border=0 alt=add_target_project_dialog src="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/add_target_project_dialog_thumb.png" width=204 height=244 mce_src="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/add_target_project_dialog_thumb.png"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV align=left&gt;Select the assemblies you wish to collect Instrumentation data for and choose OK.&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P align=left&gt;The selected projects will now be modified (instrumented) when you start profiling. You can selectively disable instrumentation for certain projects by right-clicking on the target and unchecking the 'Instrument' option.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/targets_launchable_trace_properties_crop_2.png" mce_href="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/targets_launchable_trace_properties_crop_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" border=0 alt=targets_launchable_trace_properties_crop src="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/targets_launchable_trace_properties_crop_thumb.png" width=244 height=164 mce_src="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/TipVS2008PerformanceTargets_B46B/targets_launchable_trace_properties_crop_thumb.png"&gt;&lt;/A&gt; &lt;BR&gt;&lt;EM&gt;Instrumentation properties for a specific target.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp; [&lt;A class="" href="http://blogs.msdn.com/colinth" mce_href="http://blogs.msdn.com/colinth"&gt;Colin Thomsen&lt;/A&gt;]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8751436" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/profiler/archive/tags/profiler/default.aspx">profiler</category><category domain="http://blogs.msdn.com/profiler/archive/tags/vs2008/default.aspx">vs2008</category><category domain="http://blogs.msdn.com/profiler/archive/tags/vsts/default.aspx">vsts</category><category domain="http://blogs.msdn.com/profiler/archive/tags/tips/default.aspx">tips</category></item><item><title>Excluding Small Functions From Instrumentation</title><link>http://blogs.msdn.com/profiler/archive/2008/07/08/excluding-small-functions-from-instrumentation.aspx</link><pubDate>Wed, 09 Jul 2008 05:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8711005</guid><dc:creator>profiler</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/profiler/comments/8711005.aspx</comments><wfw:commentRss>http://blogs.msdn.com/profiler/commentrss.aspx?PostID=8711005</wfw:commentRss><description>&lt;P&gt;In Visual Studio 2008, we added a feature to exclude small functions from instrumentation.&amp;nbsp; A small function is a function that has very few instructions and makes no function calls (i.e. it’s a leaf).&amp;nbsp; The idea behind this feature is that small functions are unlikely to be significant in the overall profile of your application, so we can skip collecting data for them altogether to avoid the overhead of otherwise doing so.&amp;nbsp; This feature is meant to exclude property getters and setters, but it will also exclude very simple functions that are typically inlined anyway.&lt;/P&gt;
&lt;P&gt;The first benefit of this feature is reduced instrumentation probe execution overhead.&amp;nbsp; Typically, small property getters and setters incur the time cost of executing two probes: the enter and exit probes.&amp;nbsp; The execution time of these probes dwarfs the execution time of the getter or setter itself.&amp;nbsp; To top it off, this cost is paid on every single property access which can be frequent.&amp;nbsp; By not instrumenting these property getters and setters, we can reduce execution overhead.&lt;/P&gt;
&lt;P&gt;The second benefit is reduced profile data file (.vsp) size.&amp;nbsp; Fewer probes means less data collected.&amp;nbsp; If you’ve done instrumentation profiling before, you probably know that the data files can grow quickly.&amp;nbsp; Keeping file sizes smaller facilitates sharing and faster analysis.&lt;/P&gt;
&lt;P&gt;The third benefit is reduced noise in your profile.&amp;nbsp; Since we don’t collect any data for these insignificant functions, they won’t even show up in your reports.&amp;nbsp; This is similar to, but independent of, the new &lt;A href="http://blogs.msdn.com/colinth/archive/2008/01/31/noise-reduction-in-vs2008.aspx" mce_href="http://blogs.msdn.com/colinth/archive/2008/01/31/noise-reduction-in-vs2008.aspx"&gt;noise reduction&lt;/A&gt; feature in VS2008.&lt;/P&gt;
&lt;P&gt;With this feature enabled, it’s important to note that the time spent executing a small function does not just disappear.&amp;nbsp; Instead, the time gets attributed to the callers of the function excluded.&amp;nbsp; For example, if Foo calls SmallFunc, the exclusive time of SmallFunc when Foo called it is added to Foo’s exclusive time.&amp;nbsp; It’s as if the function was inlined at all of its call sites.&lt;/P&gt;
&lt;P&gt;Small function exclusion is enabled by default which can, on occasion, cause issues.&amp;nbsp; &lt;EM&gt;Really&lt;/EM&gt; simple projects such as a default C# console application or a default WCF service, are essentially infrastructure code in addition to (nearly) empty functions.&amp;nbsp; Because of this, profiling one of these default project types immediately after creation will typically yield “Error VSP1734 : File contains no data: ...” since nothing gets instrumented (they’re all small functions, after all).&lt;/P&gt;
&lt;P&gt;You can disable small function exclusion by opening an instrumentation target’s properties, selecting the Instrumentation section, and unchecking “Exclude small functions from instrumentation”.&amp;nbsp; Each instrumentation target has its own value for this property.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Excludingsmallfunctionsfrominstrumentati_1330F/target-props_2.png" mce_href="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Excludingsmallfunctionsfrominstrumentati_1330F/target-props_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" title=target-props border=0 alt=target-props align=left src="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Excludingsmallfunctionsfrominstrumentati_1330F/target-props_thumb.png" width=263 height=204 mce_src="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Excludingsmallfunctionsfrominstrumentati_1330F/target-props_thumb.png"&gt;&lt;/A&gt; &lt;A href="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Excludingsmallfunctionsfrominstrumentati_1330F/exclude-small-funcs_2.png" mce_href="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Excludingsmallfunctionsfrominstrumentati_1330F/exclude-small-funcs_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" title=exclude-small-funcs border=0 alt=exclude-small-funcs src="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Excludingsmallfunctionsfrominstrumentati_1330F/exclude-small-funcs_thumb.png" width=303 height=204 mce_src="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Excludingsmallfunctionsfrominstrumentati_1330F/exclude-small-funcs_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;If you’re instrumenting your binaries on the command-line using &lt;A href="http://msdn.microsoft.com/en-us/library/ms182402.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms182402.aspx"&gt;vsinstr.exe&lt;/A&gt;, you can specify /excludesmallfuncs to exclude small functions from instrumentation.&amp;nbsp; The default command-line behavior is to instrument everything.&lt;/P&gt;
&lt;P&gt;[&lt;A href="http://blogs.msdn.com/chrissc/" mce_href="http://blogs.msdn.com/chrissc/"&gt;Chris Schmich&lt;/A&gt;]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8711005" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/profiler/archive/tags/vs2008/default.aspx">vs2008</category><category domain="http://blogs.msdn.com/profiler/archive/tags/tips/default.aspx">tips</category></item><item><title>Quick Tip: VS2008 - Compare Reports Quickly</title><link>http://blogs.msdn.com/profiler/archive/2008/07/02/quick-tip-vs2008-compare-reports-quickly.aspx</link><pubDate>Wed, 02 Jul 2008 20:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8681728</guid><dc:creator>profiler</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/profiler/comments/8681728.aspx</comments><wfw:commentRss>http://blogs.msdn.com/profiler/commentrss.aspx?PostID=8681728</wfw:commentRss><description>&lt;P&gt;While investigating a performance problem you may need to collect many Performance Reports and compare them. You can use the Performance Explorer to quickly compare two reports by:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Selecting two reports. &lt;/LI&gt;
&lt;LI&gt;Right-clicking and choosing 'Compare Performance Reports...' &lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/QuickTipVS2008CompareReportsQuickly_FB64/comp_reports_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/QuickTipVS2008CompareReportsQuickly_FB64/comp_reports_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=308 alt=comp_reports src="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/QuickTipVS2008CompareReportsQuickly_FB64/comp_reports_thumb.jpg" width=354 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/QuickTipVS2008CompareReportsQuickly_FB64/comp_reports_thumb.jpg"&gt;&lt;/A&gt; &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;The oldest report will be used for the 'Baseline' report and the other report will be used for the 'Comparison' report, as shown below:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/QuickTipVS2008CompareReportsQuickly_FB64/comp_reports_2_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/QuickTipVS2008CompareReportsQuickly_FB64/comp_reports_2_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=308 alt=comp_reports_2 src="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/QuickTipVS2008CompareReportsQuickly_FB64/comp_reports_2_thumb.jpg" width=701 border=0 mce_src="http://blogs.msdn.com/blogfiles/colinth/WindowsLiveWriter/QuickTipVS2008CompareReportsQuickly_FB64/comp_reports_2_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;[&lt;A href="http://blogs.msdn.com/colinth"&gt;Colin Thomsen&lt;/A&gt;]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8681728" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/profiler/archive/tags/profiler/default.aspx">profiler</category><category domain="http://blogs.msdn.com/profiler/archive/tags/team+system/default.aspx">team system</category><category domain="http://blogs.msdn.com/profiler/archive/tags/vs2008/default.aspx">vs2008</category><category domain="http://blogs.msdn.com/profiler/archive/tags/tips/default.aspx">tips</category></item><item><title>What code path is allocating the most bytes for a type?</title><link>http://blogs.msdn.com/profiler/archive/2008/06/14/where-are-the-most-bytes-for-a-type-being-allocated.aspx</link><pubDate>Sun, 15 Jun 2008 02:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8598665</guid><dc:creator>profiler</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/profiler/comments/8598665.aspx</comments><wfw:commentRss>http://blogs.msdn.com/profiler/commentrss.aspx?PostID=8598665</wfw:commentRss><description>&lt;P&gt;In Visual Studio 2008, we added the ability to &lt;A href="http://blogs.msdn.com/ianhu/archive/2007/09/14/pinpoint-a-performance-issue-using-hotpath-in-visual-studio-2008.aspx" mce_href="http://blogs.msdn.com/ianhu/archive/2007/09/14/pinpoint-a-performance-issue-using-hotpath-in-visual-studio-2008.aspx"&gt;quickly determine the most expensive call stack in your application&lt;/A&gt;.&amp;nbsp; In profiler parlance, the “most expensive call stack” is known as the “hot path”.&amp;nbsp; What do we mean by “expensive”?&amp;nbsp; “Expensive” is whatever measure you want it to be: number of samples in a function, time spent in a function, or even number of bytes or allocations in a function.&lt;/P&gt;
&lt;P&gt;If you &lt;A href="http://blogs.msdn.com/ianhu/archive/2005/03/31/404173.aspx" mce_href="http://blogs.msdn.com/ianhu/archive/2005/03/31/404173.aspx"&gt;profile the managed memory usage of your application&lt;/A&gt; (also available in VS2008), you will get a new view in your profiling report called the Allocation View:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Wherearethemostbytesforatypebeingallocat_E67E/allocation-view_8.png" mce_href="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Wherearethemostbytesforatypebeingallocat_E67E/allocation-view_8.png"&gt;&lt;IMG title=allocation-view style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=314 alt=allocation-view src="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Wherearethemostbytesforatypebeingallocat_E67E/allocation-view_thumb_3.png" width=548 border=0 mce_src="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Wherearethemostbytesforatypebeingallocat_E67E/allocation-view_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;For each managed type allocated in your application, this view will show you the call stack where each allocation took place as well as the number of bytes and instances allocated in each function.&lt;/P&gt;
&lt;P&gt;You can explore these call trees as you do normally, including using hot path to find the expensive allocation paths through your code for a specific type.&amp;nbsp; This is accessible through either the toolbar or the context menu by right-clicking on the function from where you want to start hot path:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Wherearethemostbytesforatypebeingallocat_E67E/allocation-hot-path-menu_2.png" mce_href="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Wherearethemostbytesforatypebeingallocat_E67E/allocation-hot-path-menu_2.png"&gt;&lt;IMG title=allocation-hot-path-menu style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=344 alt=allocation-hot-path-menu src="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Wherearethemostbytesforatypebeingallocat_E67E/allocation-hot-path-menu_thumb.png" width=548 border=0 mce_src="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Wherearethemostbytesforatypebeingallocat_E67E/allocation-hot-path-menu_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;In this example, we know we’re allocating about 741KB of memory for System.Drawing.Graphics objects.&amp;nbsp; Using hot path, we can quickly determine that the majority (67%)&amp;nbsp; of the bytes are being allocated in System.Drawing.Graphics.FromHwndInternal.&amp;nbsp; Because we do not control this code, we can look up the stack until we see code that we can change: MainForm.SetCell.&amp;nbsp; This would be a great place to begin investigation.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Wherearethemostbytesforatypebeingallocat_E67E/allocation-hot-path_6.png" mce_href="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Wherearethemostbytesforatypebeingallocat_E67E/allocation-hot-path_6.png"&gt;&lt;IMG title=allocation-hot-path style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=314 alt=allocation-hot-path src="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Wherearethemostbytesforatypebeingallocat_E67E/allocation-hot-path_thumb_2.png" width=548 border=0 mce_src="http://blogs.msdn.com/blogfiles/chrissc/WindowsLiveWriter/Wherearethemostbytesforatypebeingallocat_E67E/allocation-hot-path_thumb_2.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;It’s important to note that the allocation hot path &lt;EM&gt;is not&lt;/EM&gt; the single function allocating the most bytes in your application (you can use the Function View for that).&amp;nbsp; Instead, it is the specific path through your code that is allocating the most bytes for a type.&lt;/P&gt;
&lt;P&gt;[&lt;A class="" href="http://blogs.msdn.com/chrissc/" mce_href="http://blogs.msdn.com/chrissc/"&gt;Chris Schmich&lt;/A&gt;]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8598665" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/profiler/archive/tags/profiler/default.aspx">profiler</category><category domain="http://blogs.msdn.com/profiler/archive/tags/team+system/default.aspx">team system</category><category domain="http://blogs.msdn.com/profiler/archive/tags/vs2008/default.aspx">vs2008</category><category domain="http://blogs.msdn.com/profiler/archive/tags/tips/default.aspx">tips</category></item><item><title>Very Quick Tip: Getting the most out of your screen for viewing call trees</title><link>http://blogs.msdn.com/profiler/archive/2008/06/04/very-quick-tip-getting-the-most-out-of-your-screen-for-viewing-call-trees.aspx</link><pubDate>Wed, 04 Jun 2008 21:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8573815</guid><dc:creator>profiler</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/profiler/comments/8573815.aspx</comments><wfw:commentRss>http://blogs.msdn.com/profiler/commentrss.aspx?PostID=8573815</wfw:commentRss><description>&lt;P&gt;I spend a lot of time in the profiler's Call Tree view when I use the profiler.&amp;nbsp; When you are really digging deep into the tree, screen real estate becomes a big issue.&amp;nbsp; There is one very simple Visual Studio trick that really helps out so you can get more of the call tree on the screen at one time without scrolling around.&amp;nbsp; Set the focus on the call tree view and hit Shift-Alt-Enter.&amp;nbsp; It will bring up a full screen view of just the document you are working on which makes it much easier to do the data analysis (especially on wide screen monitors).&amp;nbsp; This works in all VS documents.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;[Steve Carroll - scarroll]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8573815" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/profiler/archive/tags/profiler/default.aspx">profiler</category><category domain="http://blogs.msdn.com/profiler/archive/tags/visual+studio/default.aspx">visual studio</category><category domain="http://blogs.msdn.com/profiler/archive/tags/tips/default.aspx">tips</category></item><item><title>Quick Tip: "Save Analyzed" for large VSP files</title><link>http://blogs.msdn.com/profiler/archive/2008/05/17/quick-tip-save-analyzed-for-large-vsp-files.aspx</link><pubDate>Sun, 18 May 2008 09:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8518005</guid><dc:creator>profiler</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/profiler/comments/8518005.aspx</comments><wfw:commentRss>http://blogs.msdn.com/profiler/commentrss.aspx?PostID=8518005</wfw:commentRss><description>&lt;P&gt;One cool new feature in the Visual Studio 2008 Profiler is the ability to take a large VSP file that has been analyzed once and save the report data into a VSPS file (&lt;STRONG&gt;V&lt;/STRONG&gt;isual &lt;STRONG&gt;S&lt;/STRONG&gt;tudio &lt;STRONG&gt;P&lt;/STRONG&gt;rofiler &lt;STRONG&gt;S&lt;/STRONG&gt;ummary files).&amp;nbsp; Saving the analyzed data has several major benefits: &lt;/P&gt;
&lt;OL&gt;
&lt;OL&gt;
&lt;LI&gt;The analyzed data is orders of magnitude smaller than the VSP file.&amp;nbsp; We've seen 4GB trace VSPs get compressed into less than 100K VSPS files.&lt;/LI&gt;
&lt;LI&gt;Because the data saved in the VSPS files has already been processed by our data analyzer, it will load up much faster.&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;Symbol data is automatically packed into the VSPS file.&lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt;
&lt;P&gt;VSPS files because of their small size, quick analysis, and saved symbols are perfect for use as saved baselines with the new performance comparison functionality in VS2008.&amp;nbsp; A best practice is to regularly save off VSPS files for your performance scenarios so you can look for performance regressions from one milestone to the next.&lt;/P&gt;
&lt;P&gt;This feature is not particularly discoverable.&amp;nbsp; Here's a quick map of where to find it (highlighted in yellow):&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/QuickTipSaveAnalyzedforlargeVSPfiles_14D77/SaveAnalyzed.jpg" mce_href="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/QuickTipSaveAnalyzedforlargeVSPfiles_14D77/SaveAnalyzed.jpg"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" border=0 alt=SaveAnalyzed src="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/QuickTipSaveAnalyzedforlargeVSPfiles_14D77/SaveAnalyzed_thumb.jpg" width=593 height=373 mce_src="http://blogs.msdn.com/blogfiles/profiler/WindowsLiveWriter/QuickTipSaveAnalyzedforlargeVSPfiles_14D77/SaveAnalyzed_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;One caveat: because the data has already been analyzed in the VSPS file, you can't use filters on VSPS files.&lt;/P&gt;
&lt;P&gt;[Steve Carroll - &lt;A href="mailto:scarroll@microsoft.com" mce_href="mailto:scarroll@microsoft.com"&gt;scarroll&lt;/A&gt;]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8518005" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/profiler/archive/tags/profiler/default.aspx">profiler</category><category domain="http://blogs.msdn.com/profiler/archive/tags/orcas/default.aspx">orcas</category><category domain="http://blogs.msdn.com/profiler/archive/tags/visual+studio/default.aspx">visual studio</category><category domain="http://blogs.msdn.com/profiler/archive/tags/team+system/default.aspx">team system</category><category domain="http://blogs.msdn.com/profiler/archive/tags/vs2008/default.aspx">vs2008</category><category domain="http://blogs.msdn.com/profiler/archive/tags/tips/default.aspx">tips</category></item></channel></rss>