VS 2010 – Analyse mogelijkheden

Visual Studio 2010 heeft allerhande extra analyse mogelijkheden. In principe is daar ten opzichte van Visual Studio 2008 weinig aan veranderd. Wel is er een hele nieuwe optie ‘Visualize Code Dependencies’, maar daar over later meer. Wat wel veranderd is, zijn de verschillende rapporten van een analyse. Waren in VS2008 deze rapportjes nog ‘gewone’ opsommingen in een tabel, nu zijn er meer grafische elementen toegevoegd. Uiteraard duurt het genereren van het rapportje nu dan ook veel langer.

analyzemenu analyzemenu2008

(rechts VS2010 en link 2008)

Ik was hier mee aan het spelen, omdat een van de nieuwe taal elementen in .NET 4.0 natuurlijk pLinq is. En ik was wel heel erg benieuwd hoe pLinq nu invloed heeft op het gebruik van onze moderne CPU’s. Tegenwoordig hebben we nu allemaal minstens 2 cores in de processor zitten. Maar vooralsnog gebruiken we deze cores nog maar bar slecht.

De verschillen in de Performance Wizard zijn best groot, zo heb je in Visual Studio 2010 veel meer keuzes. Ook de verschillende views op de resultaten zijn enorm uitgebreid.

profilerwizardprofilerwizard2008

De beide wizards, rechts 2010 en links 2008.

verschillendeviewsverschillendeviews2008

De beide keuzes aan views, rechts 2010 en links 2008.

Mijn test was als volgt. Uiteraard heb ik dit niet zelf bedacht, maar gejat van Daniel Moth.

 normalecodeplinqcode

Het rechtse code voorbeeld is de recht-door-zee Linq query. We vullen een array met getallen van 1 tot 1000. Daarna doen we een Linq query over de array en zoeken alle getallen die deelbaar zijn door 5. We drukken het aantal resultaten af en we berekenen het aantal ticks tussen het begin en het eind. In het linkse code voorbeeld doen we hetzelfde, maar dan gebruiken we de Extension Methode AsParallel. (We hoeven natuurlijk pas de Stopwatch te starten als we werkelijk iets met q gaan. De Linq query wordt pas echt uitgevoerd in de UseResult methode.)

Het uitvoeren van beide varianten levert al een duidelijk verschil op. Uiteraard niet op het resultaat, dat is in beide gevallen 200 😉 Maar wel het aantal ticks, dat is in de pLinq variant beduidend lager. In de Taskmanager is ook iets leuks te zien. De CPU usage is in beide gevallen anders. Mijn machine heeft twee cores. In het eerste geval is er een verhoogde activiteit, maar nooit voluit en niet gelijk verdeeld over beide cores. In het tweede geval schiet het CPU gebruik naar de 100% en dan ook voor beide cores.

Met de performance wizards is dit erg mooi te zien. In beide rapporten kun je kiezen voor CPU ultilization. Het laat zich raden wel de pLinq variant is.

cpuutilization

De bovenste meting is van de pLinq versie en de onderste is de gewone recht-door-zee Linq query.

Het is zeker aan te bevelen om eens met de verschillende views te spelen.

Maar nu de nieuwe optie ‘Visualize Code Dependencies’. Die had ik nog niet gezien in Visual Studio 2008. Deze optie heeft drie keuzes: by Assembly, by Class, by Namespace. Alle drie hebben een ander startpunt, vanaf waar je door kan klikken naar beneden. Als je deze optie loslaat op de voorbeelden van hierboven, dan krijg je dit.

codedepbyclass01

Als je dan klikt op het tekentje in het cirkeltje, dan krijg je onderstaande.

codedepbyclass0 

Voor de code van de voorbeelden uit deze blogpost niet zo heel erg indrukwekkend. Maar als ik een oude VS2005 applicatie open en kies voor een view ‘By Class’, dan geeft dat toch een heel ander beeld. Best indrukwekkend.

codedepbyclass

codedepbyclass2

Gaat het ons toch nog eens lukken om documentatie te maken, die daadwerkelijk overeenkomt met de opgeleverde code. Maar ja, dan blijft de documentatie natuurlijk wel weer de sluitpost. Tenslotte aan het eind is de code klaar 😉

This entry was posted in .NET, SDN by Marcel Meijer. Bookmark the permalink.

About Marcel Meijer

Op dit moment houdt hij zich voornamelijk bezig met Microsoft Azure, Cloud, C#, Software Ontwikkeling, Architectuur, Windows 10 en IoT. Hij werkt als Development Team Lead bij iFunds. In zijn vrije tijd is hij voorzitter, bestuurslid, eindredacteur en eventorganisator bij de SDN (Software Development Network). Sinds 1 oktober 2010 is hij MVP geworden.

Leave a Reply

Your email address will not be published. Required fields are marked *