Posts Tagged ‘dotTrace’

dotCover 1.1, dotTrace 4.5 Performance Beta 2

Wednesday, May 4th, 2011

Following community feedback on the initial beta releases of dotCover 1.1 and dotTrace 4.5 Performance, we have prepared Beta 2 builds of these products for you to try:

Compared to the Beta 1 stage, here’s what sets dotCover 1.1 Beta 2 apart:

  • In the console runner, configuration actions can now be taken from the command line (without using XML), and snapshots can be passed directly as arguments.
  • Streamlined coverage analysis of web applications: specifically, errors are now better handled during analysis, and a snapshot is opened immediately after clicking “Get snapshot”.
  • Bug fixes including those related to suspending and resuming dotCover.

Improvements in dotTrace 4.5 Performance Beta 2 include:

  • No more loss of focus on applying zero folding.
  • Constructors are now included when you choose to open all public methods of a class in a separate tab.
  • Some less noticeable bug fixes and usability improvements.

Note that, due to a bug when switching between editions that we’re yet to resolve, dotTrace 4.5 Performance Beta 2 is released as a development build — that means, exceptions are not suppressed.

Enjoy the new builds, and please don’t forget to share any issues you may encounter using dotTrace issue tracker and dotCover issue tracker.

dotCover 1.1, dotTrace 4.5 Performance Beta Releases

Thursday, April 7th, 2011

We are pleased to announce the immediate availability of dotCover 1.1 Beta and dotTrace 4.5 Performance Beta. Having opened Early Access Programs for both products just over a month ago, and based on the feedback received, we are now ready to push out the Beta’s for the products.

What’s new in dotCover 1.1 Beta

We have described many of the features in detail in the post on dotCover 1.1 and dotTrace 4.5 Performance EAP. Summary of these are:

  • Improved presentation of class members in the coverage results tree
  • Filtering coverage tree on-the-fly with recalculation of statistics
  • Per-solution settings for coverage
  • HTML/JSON report generator
  • Two predefined color schemes for coverage highlighting
  • On-demand license checking

In addition, this latest Beta release includes:

  • Incremental update of coverage info when part of tests are rerun. Coverage information is calculating incrementally without requiring a full profiling on new runs, making the whole process much faster.
  • NDepend integration. We now provide support for NDepend, allowing the possibility of exporting coverage reports in XML format suitable for NDepend:
  • Integration with TeamCity Visual Studio plug-in for obtaining remote snapshots. You can now use TeamCity’s VS plug-in to connect to a TeamCity server and obtain snapshot information from a Continuous Integration coverage analysis run:

What’s new in dotTrace 4.5 Performance Beta

Once again, most dotTrace 4.5 Performance features are already described in the EAP announcement post. Here’s a summary of these:

  • Less noise in call stacks and improved tree representation
  • Putting all public methods of specific class in single tab
  • Improved estimation of potential performance gains
  • Source preview for .NET Framework assemblies
  • Display of IL code in source view
  • Performance improvements
  • New floating license handling policy
  • Welcome Page cosmetics

New addition in dotTrace 4.5 Performance Beta is that the Sampling is now the default profiling mode.

We have of course also focused on fixing issues that were reported during the EAP and earlier versions of the product.

You’re welcome to give the beta releases a try: download them from dotTrace web site and dotCover web site.

If you happen to see any bugs or glitches, please report them to dotTrace bug tracker and dotCover bug tracker.

Simulating Performance Improvements with dotTrace

Thursday, March 10th, 2011

Let’s say you’re trying to improve performance of some application that is doing poorly. You manage to find what could potentially be a bottleneck and decide that it needs fixing. Of course, Murphy’s Law dictates that the potential issue you’ve found is probably one of the harder problems to solve as it might involve improving a calculation algorithm or changing some third party framework.

This could turn into quite an expensive operation. It would be a shame to spend time and resources on it to not have a the desired impact on the overall system. In other words, it’s best to know you’re barking up the right tree.

What if…

That’s where dotTrace Adjust Time feature comes in very handy. By allowing us to adjust the amount of time spent in a particular spot of an application, we can simulate the overall impact it would if we were to perform optimizations in that area, without having to actually do them first.

Let’s take a look at the following call tree of a performance trace for a sample application

Looking at the call trace, we can see that the majority of the time spent is dedicated to IntersectRay. This method in turn calls Sphere.Intersect and Plane.Intersect. Out of the two, the first is the more time-consuming

What would happen if we were to now try and optimize the performance of Sphere.Intersect? What overall impact would it have if the time it takes to complete the call were reduced by 30%.

Now, instead of spending time on re-designing the method, we will use the simulation functionality in dotTrace to verify whether it’s worth a potential effort.

To simulate the improvement, we right-click on the Intersect line and select Adjust Time

We are then prompted by a dialog box that allows us to adjust the time by a factor of 0 to 100.

Apart from adjusting the time, we can indicate whether we want the adjustment to be only on the specified call stack that we are currently on (Selected Call Stack), applied it to all call stacks (All call stacks) of this method or call stacks with the calling method as the parent function (this last option is available in dotTrace 4.5 EAP only).

We can also specify whether we want the adjustment to effect the overall time of the function (the function itself and all functions it calls), only the function’s own time or all functions of the the specified class.

It is important when applying adjustments to take these options into account because selecting different values can have an impact not only on the current call stack we are trying to optimize but also on the entire application.

In our case, we are going to apply adjustments to all call stacks and to the function’s total time. We will apply a 30% reduction, which means we will enter 70 as the Factor value. This now produces the following result

First thing to notice is that the line where we’ve adjusted the time is crossed out. Next to each time, we now see a new amount in the color green and the original time in blue in brackets. Focusing on the IntersectRay method, a 30% improvement of Sphere.Intersect would lead to approximately 19% improvement on the call and an overall increase of 15% in terms of performance. Is that worth it?

Let’s dig deeper. Opening up Sphere.Intersect we see that 24% of the time is dedicated to the Vector.op_Multiply. What would happen if we were to focus our improvement exclusively on this method call? Applying the same 30% increase in performance, we’d end up with an overall increase of 14%

Despite representing only 1/3 of the total time of Sphere.Intersect, an improvement on that call alone will provide us with the same overall performance increase as concentrating on the complete method. In fact, it makes more sense to optimize the op_Multiply method since it’s used extensively throughout the application. That’s where we should focus our efforts!

Optimization Shortcuts in 4.5

dotTrace 4.5, which at the time of publishing this post is in EAP, introduces some shortcuts for time adjustment. When right-clicking on Adjust Time context menu, a submenu displays two additional options:

which allow us to quickly optimize the current (or all) instances of a specific method. Optimizing means setting the total time to 0.

Experimenting before committing

The reason for the Adjust Time feature in dotTrace is for experimenting with different calls before actually having to commit to changes. Often a 10% increase in one function can lead to a 20% overall improvement. Other times, it can lead to a 2% improvement. Knowing this before hand is very valuable since it provides us with something to balance against to see not only whether we’re barking up the wrong tree, but also if it’s worth barking at all.

dotCover 1.1, dotTrace 4.5 Performance Early Access

Tuesday, March 1st, 2011

dotTrace 4.5 Performance and dotCover 1.1 have recently gone EAP: you can download fresh dotTrace and dotCover builds from their Early Access Program pages.

Why would you do that? Let’s see what’s new in the dotTool kingdom.

What’s new in dotCover 1.1 EAP

  • Improved presentation of class members in the coverage results tree. When you browse coverage results with dotCover 1.1, you can clearly see properties with getters and setters, or events with add and remove accessors. Anonymous delegates and lambdas are now represented by a node within their containing method denoting types that they receive and return.
  • Filtering coverage tree on-the-fly with recalculation of statistics. You can now exclude a specific node, or all nodes except this node, from the coverage tree and have dotCover instantly recalculate percentages of covered and uncovered code:
  • Per-solution settings for coverage. Starting from dotCover 1.1, coverage filters are stored per-solution in projectName.dotCover files. In case you’re covering a compiled application, i.e. you’re not working with a solution per se, global settings are used.
  • HTML/JSON report generator. This will be available both in console runner and in Visual Studio coverage UI.
  • Two predefined color schemes for coverage highlighting. Some like it dark, some like it bright, so we figured, why not provide two options by default? Of course, you can always fine-tune colors for coverage highlighting by tweaking dotCover display items in Tools | Options | Environment | Fonts and Colors.
  • On-demand license checking. dotCover doesn’t check for your license until you actually start using the product. This is also implemented in dotTrace 4.5 Performance (see below.)

In addition, before dotCover 1.1 is released, we’re expecting to add another feature, namely incremental update for coverage information after a part of tests is rerun. As soon as it is implemented, adding new unit tests won’t require creating an entire new coverage snapshot.

What’s new in dotTrace 4.5 Performance EAP

  • Less noise in call stacks and improved tree representation. Tree content is now better organized because icons to the left of the tree do not misalign it anymore. In addition, you can now quickly fold or unfold “0.00%” calls that take insignificant time with Ctrl+Space:

  • Putting all public methods of specific class in single tab. You can now quickly extract all public method calls in a certain class to a separate tab:
  • Improved estimation of potential performance gains. You can now adjust time of a function called from a specific parent function, leaving its other calls intact:
  • Source preview for .NET Framework assemblies. This is something inspired by ReSharper 6 EAP and its new decompiling functionality:
  • Display of IL code in source view:
  • Performance improvements. dotTrace 4.5 Performance generates Hot Spots and Plain List views a lot faster than version 4.0. Acceleration has also been applied to search in Hot Spots view and canceling view construction on pressing Esc. As to applications being profiled, they should now run faster and consume less memory under profiling.
  • New floating license handling policy. This change affects licensing behavior of dotTrace plug-in for Visual Studio and doesn’t affect dotTrace running as a standalone application. Before, a floating license ticket was given upon loading the dotTrace plug-in in Visual Studio irrelevant of whether a user actually needed it. As a result, the License Server was time and again running out of available tickets before someone who really needed to use dotTrace was able to get his/her hands on it. Starting from dotTrace 4.5 Performance, a ticket is only requested after a user has performed an operation with dotTrace from within Visual Studio.
  • Welcome Page cosmetics. dotTrace Performance Welcome page can now differentiate between applications with similar names, and the Recent Snapshots area highlights snapshots that have been deleted, renamed and moved:

Download dotTrace and dotCover EAP builds.

JetBrains Community Night in Malmö

Saturday, November 27th, 2010

Last Thursday we held a JetBrains Community Night in Malmö. It was an informal gathering of JetBrains Tools Users, where we discussed some of the upcoming features for our tools as well as showing some tips and tricks for using ReSharper efficiently, and pointing out some of the less known gems. Features of the upcoming ReSharper 6 were also demoed, as was dotCover and dotTrace.

aez0

It is really nice to be able to talk to customers one-on-one and learn more about how they use our tools, what features they’d like and in general have some wonderful conversations.

A very big thank you to everyone who came to the event, as well as to Edument and Informator in helping with the organization.

Seeing the great success we are having with these types of events, we will most certainly be organizing more in the upcoming future.

To see more pictures of this and other events and also stay in touch with upcoming ones, check out our Facebook page

Thanks!

dotCover 1.0.1, dotTrace 4.0.1 Performance Bugfix Releases

Thursday, November 18th, 2010

Today we’re coming out with initial bugfix releases for both dotCover and dotTrace Performance.

Please download dotCover 1.0.1 and dotTrace 4.0.1 Performance if you have issues with previous releases of these products. Here’s the list of most notable improvements in these bugfix releases.

  • What’s new in dotTrace 4.0.1 Performance
    • Dramatic performance increase in scenarios involving snapshot navigation and call folding.
    • Other profilers are not any more messing with dotTrace registry settings.
    • Fixed an issue with tracing mode profiling in certain scenarios incl. SharePoint applications: dotTrace no longer exits after throwing “Can’t get thread handle” exception. (DTRC-4954)
    • Fixed an OutOfMemory exception on saving snapshots (DTRC-5034)
    • Fixed dotTrace Performance interoperability with Hyper-V virtual machines.
    • Attempts to profile Windows Mobile 2003 applications are now handled in a much less obscure manner, with dotTrace clearly telling that this kind of applications is not supported.
  • What’s new in dotCover 1.0.1
    • Ctrl+Alt+Y - a new shortcut to switch coverage highlighting on/off, plus a new dotCover menu item called Toggle Code Highlighting.
    • The Coverage tool window now remembers preferences set during previous run, such as whether to highlight coverage and grouping options, and expanded/collapsed state of coverage tree nodes.
    • Auto-generated assemblies, such as those generated during execution of MSTest tests, are no longer taken into account by coverage analysis.
    • You can now specify exactly which files are subject to coverage highlighting with filters. dotCover respects the filtering settings not only when it includes items in the coverage tree, but when it highlights coverage as well.
    • Fixed issues related to License Information dialog box closing unexpectedly while entering license keys.

Relevant links:

Time for Some Editor’s and Reader’s Love

Tuesday, November 2nd, 2010

What do Visual Studio Magazine readers and editors have in common?

They both like JetBrains tools!

As Visual Studio Magazine announced today, JetBrains ReSharper gets this year’s Readers Choice award in General Development Tools and the Editor’s Choice as Most Valuable Developer Tool - both for the second year in a row!

For the second year, JetBrains ReSharper earned top honors as the Most Valuable Developer Tool, dominating both our reader and panelist polling. Panelist and VSM Tools Editor Peter Vogel perhaps said it best: “I think I could write code without ReSharper—but I’m not sure anymore.”

Heavenly music to our ears!

These badges look pretty, don’t they?

That’s not all though!

Two more JetBrains products get Merit awards in their respective categories: dotTrace in Performance, Profiling and Debugging Tools, and TeamCity in Collaboration, Project Management, and Agile Solutions.

Many thanks and hugs to the panelists and readers of Visual Studio Magazine, and to all our users who’re spreading the love around! You’ve got style!

To be honest, we at the dev labs really liked ReSharper 5, too - probably more than any previous version. If ReSharper 6 lives up to expectations and becomes a stunner as we’re designing it to be, we’re hoping for a repeat success next year!

dotCover 1.0 and dotTrace 4 Performance are Released!

Wednesday, September 15th, 2010

There’s joy and happiness all around for .NET developers as we’re finally releasing dotTrace 4 Performance and dotCover to the market!

Download dotCover and dotTrace 4 Performance right now to make your applications fast and properly covered.

Just as a reminder, dotCover is a brand new, simple .NET code coverage tool that:

  • Integrates with Visual Studio 2005, 2008, or 2010 to analyze unit test coverage in .NET Framework and Silverlight applications.
  • Supports multiple unit testing frameworks (MSTest, NUnit, xUnit, MSpec, etc.)
  • Highlights code that is covered (or not covered) by unit tests.
  • Provides code coverage via application execution.
  • Detects which unit tests cover any particular location in code.
  • Integrates with ReSharper’s unit testing toolset.
  • Provides a console utility, enabling to use it with a Continuous Integration server.
  • Generates XML-based code coverage reports.

Learn more about dotCover on this blog and on JetBrains TV.

dotTrace 4 Performance helps .NET developers:

  • Get accurate info on performance bottlenecks in a variety of .NET applications including those built using .NET Framework 4, .NET Compact Framework 3.5, and Silverlight 4.
  • Profile applications with great accuracy in several modes, including profiling remote applications.
  • Profile complex desktop and server applications, thanks to unprecedented robustness.
  • Immediately estimate how removing a particular bottleneck would affect the overall application performance.
  • Launch profiling from Microsoft Visual Studio and quickly switch back to review problematic source code.

Learn more about dotTrace 4 Performance on JetBrains TV. You might also take a look at the updated dotTrace documentation section for brand new online help and a Getting Started tutorial.

dotTrace 4 Memory is expected to come out in several months. Meanwhile, dotTrace 3.5 Memory is available, which is a memory part from dotTrace 3.1 with additional support for CLR 4.

dotTrace 4 Performance comes in two editions, Standard and Professional. You can learn more about the new editioning scheme in dotTrace FAQ.

If you’re an existing dotTrace customer, then bang! dotTrace 3.5 Memory is free for you. Better yet, if your license was purchased on or after December 17, 2008, you get a free upgrade to dotTrace 4 Performance and dotTrace 3.5 Memory.

Download dotCover (free 30-day evaluation) and dotTrace 4 Performance (free 10-day evaluation).

Release Day: ReSharper 5.1.1; dotCover and dotTrace RCs

Wednesday, September 1st, 2010

Starting today, ReSharper 5.1.1 is available for download, as well as release candidates for dotCover 1.0 and dotTrace 4 Performance.

Important! We have initially published a wrong ReSharper build (5.1.1751.10). If you have downloaded it, please go to the download page and try again: we changed the download link to point to 5.1.1751.8. Sorry for the mistake. Unfortunately sometimes mistakes happen.

ReSharper 5.1.1. This minor release is pure bug and performance fixing here and there, including (but not limited to) the following areas:

  • It introduces a fresh set of performance improvements under Visual Studio 2010, particularly in regard to displaying tooltips and error stripe behavior in intense editing scenarios.
  • It improves stability with Visual Studio 2010 by addressing reports on VS crashes while editing markup pages in web projects and applications, and during structural search and replace (for example, RSRP-188698).
  • It strengthens NUnit support in the test runner in certain ways, specifically by bundling NUnit 2.5.7.

dotTrace 4 Performance RC and dotCover 1.0 RC. We feel both products are ready for release. If you have a different opinion, please report your issues asap to dotTrace or dotCover issue trackers.

One more good thing to note is that with this RC release, we’re announcing dotCover pricing. Here’s how it goes:

  • dotCover licenses will be subscription-based. That means, when you buy a dotCover subscription, you get 1 full year of free upgrades to any new versions. As the first year passes, you have an option to renew your subscription for another year of free upgrades. Even if you don’t renew, you’ll be able to use your current dotCover version without any limitations.
  • A commercial dotCover license will cost $199, and a personal license will be worth $99.
  • Before the New Year 2011, introductory prices for both types of licenses are valid, meaning that a commercial license will be available at $99, and a personal license at $49.

Enjoy the updated .NET pack and ping us if something goes wrong.

dotTrace 4 Performance Closes In On Public Release with Beta 2

Tuesday, June 1st, 2010

The second beta release of dotTrace 4 Performance is available for download starting today.

Improvements include:

  • Thoroughly redesigned profiling session configuration wizard.
  • More project types supported when you’re profiling from Visual Studio, including XNA projects — meaning you should no longer face the annoying “Project kind is not supported” message.
  • Improved line-by-line profiling in different scenarios in .NET 1.x and .NET 3.5 applications.
  • Lots of bug fixes, big and small!

Here’s the complete release notes.

Make sure to download dotTrace 4 Performance Beta 2 for a 30-day free trial! If it happens to run out before we come up with the final release, don’t forget that fresh Nightly Builds are being updated on a regular basis.