Archive for October, 2006

JetBrains heading to TechEd 2006 in Barcelona

Thursday, October 19th, 2006

Just wanted to drop a little reminder to everybody that JetBrains will be participating in the Microsoft TechEd conference in Barcelona, November 7th – 10th, 2006. If you are not familiar with this conference, you might want to go read more about it (http://www.mseventseurope.com/TechEd/06/pre/), as it is promising to be a pretty exciting event. If you have already planned to go, please feel free to drop by our booth (A3) and say hello. Senior ReSharper and dotTrace developers Oleg Stepanov and Dmitry Lomov, along with myself (the marketing guy / booth babe), will be hanging back in the booth ready to chat it up and answer any questions you might have about our products. We will also demo ReSharper 2.0 and dotTrace 2.0 on occasion (or on demand), so if you want see how the developers of ReSharper and dotTrace use ReSharper and dotTrace, you might just want to stop by.

Also, we will be having a daily drawing and giving away about 10 licenses per day, so if you haven’t purchased ReSharper or dotTrace yet, you might be able to win a free license if luck shall have it.

David Stennett
JetBrains

Technorati tags: , , ,

How to focus on a subsystem in a dotTrace snapshot?

Friday, October 13th, 2006

After dotTrace has recorded some profiling data on your application, it presents it in the form of a snapshot. Everything you want to know about your application is stored in the snapshot and can be viewed in dotTrace. However, the wealth of data presented in one snapshot can sometimes be overwhelming. To analyze the data efficiently, you will need to focus on a subsystem, and probably more than once.

In performance snapshots, a subsystem is a branch of the function call tree. After you have selected the function you want to inspect in more detail, you can quickly open it in a new separate tab. To do so, select the function and press Ctrl + T, or right-click the node and select Open in New Tab from the context menu.

In case you know what function you are looking for, but haven’t yet located it in a view, you can quickly search for it. Press Ctrl + F to search for a function by name:

Find the function you want to inspect closer

After you locate the desired function, click Open in New Tab.

Once a function is opened in its own tab, the percentages calculated for each node you see become more relevant. They are calculated with respect to the new root node - not as a percentage of all CPU time.

In addition, opening a function in a separate tab lets you switch to the Back Traces view. The Back Traces view lists all the callpaths that led to a function. Thus, you are able to see which callpaths contributed the most to the time consumed by the function.

In memory snapshots, however, a subsystem can be one of many things. It can be:

  • an object
  • a class
  • a namespace
  • a root (Stack, Finalizer, Garbage Collector Handle, Application Domain Static, or Thread Static)



Which subsystem you should focus on depends on your goals. You may want to focus on a particular namespace to examine the memory consumption patterns of its classes. You may also want to focus on a particular class to see what objects it creates and how they consume memory. If you focus on an object, you can get a reverse view - see its Incoming References. Also, you can focus on a root, such as Finalizer, to see how objects are finalized in your code.

To open either of these entities in its individual tab, select it and press Ctrl + T, or right-click the node and select Open in New Tab from the context menu.

The bottomline of the story is: Don’t try to process too much information at once! Use the divide-and-conquer strategy - focus on a subsystem!

Technorati tags: , ,