Activity Log Profiler: Find out which extension is slowing down your Visual Studio

As I’m doing some work for the NPanday Visual Studio Addin, I bugs me even more that my Visual Studio 2010 currently needs about 40 seconds to start.

Actually I do not wonder at all, as I installed every single extension I ever found interesting. But, should I now disable them all, or rather find out which one takes the most time?

I did the latter.

After reading Did you know… There’s a way to have Visual Studio log its activity for troubleshooting? – #366 via (visual studio – VS2010 loads slowly. Can I profile extensions’ respective startup time? – Stack Overflow)

There it says, that if you start VS using devenv /Log, it will log it’s acitivity to  %AppData%\Roaming\Microsoft\VisualStudio\10.0\ActivityLog.xml (for VS 2010). And it even comes with an XML that provides some output:

image

New XSL with Profiling Capabilities

So I tweaked the XSL to be a little bit more “profiling-friendly”. It will now:

  • Tell me how long it took load each package
  • Give me a visual indicator each 1 second (configurable)
  • Mark each “End package load” line red, that exceeds a certain configurable threshold (default 500 ms).
  • Mark each normal line read, if it exceeds the configured threshold.

image

image

Hotspots

image

Download and use with GIT

  1. Open Commandwindow in %AppData%\Roaming\Microsoft\VisualStudio\10.0
  2. Run git clone https://github.com/lcorneliussen/ActivityLogProfiler
  3. Start Visual Studio with ‘/Log’ switch
  4. Run deploy.cmd (will overwrite default ActivityLog.xsl in parent folder; Visual Studio will replace it after restart!)
  5. Open ActivityLog.xml in Internet Explorer

You can also download it manually (from here) and replace %AppData%\Roaming\Microsoft\VisualStudio\10.0\ActivityLog.xsl manually after each Visual Studio Run.

But with GIT you can easily get updates; and it makes it easier to submit patches, which I’ll be happy to apply.

Attention: Now you only have to repeat 3) and 4) to produce new logs, as Visual Studio will recreate both ActivityLog.xml and ActivityLog.xsl each time it is started with ‘/Log’.

Advertisement

Microsoft Encourages Bad Software Quality

This post is not about bad documentation and samples. Much simpler. It’s about the Visual Studio license model.

You can’t tell me Microsoft really earns any real money with development tools. We’ve heard that before. Microsoft is all about Windows, Office and SQL Server. The rest is ecosystem.

Professional for hobbyists

But to come to the point. The Visual Studio License Model makes Software Quality Hard. The problem is, that the most common Professional Edition has major restrictions. It is not worth being called “Professional” version.

A Professional Software Engineer should be able to:

  • To analyze the code he writes
  • To run test coverage and find code impacted by tests
  • To do UI testing
  • To do web testing
  • To do performance testing
  • To explore the architecture of the project he is working on

Agree? Then why is all of this not available in an edition called “Professional”? And if you get the Professional without MSDN Subscription, it is even worse.

The Price Problem

Then just go buy the “Premium” or “Ultimate”, right?

Hm. Who decides this again? The developer? In most cases, sadly enough, the manager. But we also know managers have hard times buying tools. Especially in big enterprises.

Well you don’t buy VS on Amazon – so the prices vary a lot. On this online list two years of VS Professional cost around €1000, the Premium is available for about €7000 and the Ultimate costs €16000.

Now what happens if you try to order an Ultimate? Your manager will ask if Ultimate is a 16x productivity gain, right?

Managers (at least too many of them) are interested in quality as long as they get it for free. Quality Software is already expensive enough. Why do you make it so hard, my dear Tools Devision?

Good Medicine is bad for Doctors

Oh, I forgot: Bad quality software means somebody has to fix it for money. Slow software means more hardware and hence more sold licenses.

I have more to say. But I think I said enough.

My .NET Development Must-have Tool List

While installing my new development VM running Windows 7 Beta on my MacBook Pro via VM Ware Fusion, I just wrote a list of the tools I installed.

For daily use

Profiling

  • JetBrains dotTrace, ~ $500, Great Performance and Memory Profiler
  • nCover, from ~ $300, Code Coverage Tool for Test and Live Coverage
  • NDepend, ~ $400, Static Code Analysis for Quality
  • TD.Net, Free Personal Edition, Test-Runner with NCover support

For more tools have a look at Scott Hanselman’s Ultimate Developer and Power Users Tool List for Windows

kick it on DotNetKicks.com

DSL Tools, Software Factories and Oslo – Model-driven the Microsoft .NET way

After primarily being concerned about Model-driven Software Development in general and specifically the concepts openArchitectureWare brings into our daily developer life, I wanted to figure out what Microsoft’s answer is like.

I separated my research into three parts:

DSL Tools

The Domain-Specific Language Tools firstly shipped as external package for Visual Studio 2005. For Version 2008 they joined the Visual Studio 2008 SDK.

With the DSL Tools Microsoft offers a graphical user interface for creating DSLs. Compared to MDSD terms, the DSL Tools base DSLs on a static meta-metamodel.

A DSL then consists of Classes and Relationships defining the metamodel on the one hand, and Diagram Elements describing the graphical experience for creating an model on the other hand. Out of this metamodel VS generates a fully typed object-structure as well as designers which can be plugged into Visual Studio or Visual Studio Shell.

To give you some impression these screen shots show the “End-End Wizard UIP”, one of many examples that ship with the Visual Studio SDK:

1) Defining a DSL

Defining a DSL

2) Just a click on “Run”: The Designer that was automaticly generated for this DSL + a Model following the DSL is opened in a Visual Studio Shell

Bild 4

3) Another click on “Run” starts the generated wizard program that was defined by the model.

Bild 5

 

T4 – Text Template Transformation Toolkit

For the generation of source code both DSL Tools as well as Software Factories utilize T4, a ASPX-like template language for generating program code, XML or any text files as for example database schemas.

A nice thing is that T4 allows you to use your favorite .NET programing language. But it is not even half as powerful as for example XPand template language which is used in openArchitectureWare.

It unfortunately lacks support for polymorphism, multi-file generation, protected regions and custom beautifiers.

Resources on DSL Tools

Download and Install

References

People

These names were just popping up all over.

  • Steve Cook, Book Author, Microsoft, formerly representing IBM on the OMG Team specifying UML2, does now work on DSL Tools + UML.
  • Cameron Skinner Comments on Visual Studio Team System, Design and Architecture, .NET, and beyond
  • Stuart Kent, Book Author, Senior Program Manager, Visual Studio
  • Gareth Jones, Microsoft, Senior Development Lead, Visual Studio

Software Factories

The software factories Microsoft offers are meant to guide through the whole developing lifecycle of an application mostly for one specific horizontal domain.

Software Factories are based on GAX and GAT, the Guidance Automation Extensions and the Guidance Automation Toolkit. These are frameworks to create wizards and macros/recipes that guide through the creation of an solution.

It would be wrong to say that Software Factories by concept incorporate MDSD principles, but there is still an analogy.

I could imagine building a software factory for compositing different models into a very specific ready-to-use-factory that fully considers MDSD principles by using DSLs and Code Generators.

The Microsoft Patterns and Practices Team is developing a couple of Software Factories, which include:

Especially these implementations lack at one point: Refactoring! Since code is generated once, instead of generating over and over again, changes on the templates and the model wont affect generated code.

The Software Factories are not meant to be used as products! That does’t mean they are not made for productive us, but it means that a isv will have to create own Software Factories build upon GAT/GAX or at they will at least have to highly customize the factories for their end customers use.

While DSL-Tools and MDSD often help to get bigger projects done more rapidly, developing a software factories will most likely not return its investments during the first project they are used for. You wont build a car-factory to build one single car either!

Resources

Download and Install

People

Codename “Oslo

Since October 2007, when Microsoft firstly mentioned Codename “Oslo” there has been a lot of rumors on what “Oslo” means. Oslo was never announced as a product, but more likely as a concept and strategy influencing Microsoft’s enterprise and development products line.

In fact the Oslo wave grew so big, that the different camps at Microsoft use to describe it differently.

The two latest official Statements were:

  1. At TechEd Fishbowl in June David Chappell described Oslo as:
    • A storage repository and visual modelling tool
    • A new version of Windows Workflow Foundation
    • A process server to host WCF services and WF workflows
  2. In September there was an announcement from the BizTalk camp. Douglas Purdy said Oslo now consists of just the modelling components, which are:
    • A modelling tool
    • A modelling language
    • A storage repositoryThat is it. That is all Oslo is. Oslo is just the modeling platform.

But Microsoft still leaves plenty of room for speculations. As I understand, Oslo is a campaign that affects plenty of products and services. Therefore it’s impossible to say what Oslo exactly is just in a few words.

The aspects on Oslo that excite me most, and to which I look forward to most, are:

  1. The modeling language/tool to describe schemas for the repository as well as meta models and DSLs?
  2. A repository that is able to store and connect tons of data following these models.
  3. A process server to host WF, WCF and hopefully own services that brings stability, scalability, hot deployment and all the other services we are used from Java Application Servers.

David Chappel also described the release roadmap, but without confirming any exact dates:

  1. A CTP Release around PDC (October 27?)
    He didn’t say what that will include.
  2. New Workflow Foundation with .NET 4 and a new Visual Studio version
  3. The repository including the modeling language and its visual editor + a first part of the process server
  4. A more complete version of the process server, including lifecycle manager (whatever that means)

The indend, they tell me, is to ship these three chunks of technology in a fairly close succession. As much so as possible.
David Chappell, PDC 2008

There is nothing left but waiting for the PDC in October. So see you there!

Resources

People

Well, everyone who seems to be really important does not say anything about Oslo. But still we got some statements in the past.

  • David Chappell – Consulter and Keynote Speaker who seems to be a insider to Microsoft and its forthcoming Oslo technologies
  • Douglas Purdy  – Product Unit Manager at Microsoft. His vision: “to make everyone a programmer (even if they don’t know it)”.
  • Jon Flanders

kick it on DotNetKicks.com