Featured in AI, ML & Data Engineering

In this article, author shows how to use big data query and processing language U-SQL on Azure Data Lake Analytics platform. U-SQL combines the concepts and constructs both of SQL and C#. It combines the simplicity and declarative nature of SQL with the programmatic power of C# including rich types and expressions.

Featured in Culture & Methods

The book Agile Leadership in Practice - Applying Management 3.0 by Dominik Maximini is an experience report of the agile transformation journey of NovaTec. Maximini shares his experiences from applying principles and practices from Management 3.0, success stories, failure stories, and learnings from experiments.

Featured in DevOps

Yuri Shkuro presents a methodology that uses data mining to learn the typical behavior of the system from massive amounts of distributed traces, compares it with pathological behavior during outages, and uses complexity reduction and intuitive visualizations to guide the user towards actionable insights about the root cause of the outages.

Visual Studio 11 Performance Revisited

When we last discussed performance, Microsoft's Larry Sullivan was stressing the importance of PerfWatson in generating reviewable performance data that would allow the Visual Studio team to make improvements. Sullivan is now able to reveal what his team has been able to do with that data and the specific changes being made to VS 11.

Virtual Memory

Sullivan begins by discussing the team's approach to Visual Studio's memory needs. Rather than convert the program to a native 64-bit application to access more memory, they decided to focus on being more efficient with the memory already available to them as a 32-bit process. Thus the team started with the largest consumer of memory in VS, DLLs. This led to an examination of over 800 DLLs for inefficiencies and excessive memory usage.

The next biggest memory consumer was the native heaps used by the various components in VS. Beyond reducing memory usage, the conservation effort also discovered "... hundreds of opportunities and were able to open “shovel ready” bugs for feature teams to fix."

The end result was that "roughly 300 fewer DLLs [were] being loaded and nearly 400MB of VM savings when loading a Web solution within Visual Studio". Performance gains for other solution types was not provided directly, although Sullivan did reply in a follow-up comment that:

I was able to get hold of the folks that had the numbers at their fingertips. In Beta VM is virtually flat for C++, but we do have wins coming in post Beta. There are working set wins in Beta of roughly 35 MB which is roughly a 12% improvement. We continue to work to improve Visual Studio 11 for the C++ developer.

Improved Solution Load Times

Solution load times affect all VS users, and the team has addressed this by introducing asynchronous solution loading. Nathan Halstead from Microsoft's Visual Studio Pro Team provided information on this approach which executes a project load in two phases, Modal Loading and Background Loading.

In the Modal Loading phase, VS11 loads the projects which it anticipates will be needed by the user, based on the open files in the last session. If the opened projects have dependencies to other projects, they will also be scheduled for loading in this phase. Non-critical projects will be scheduled to be loaded in the background phase.

The Background Loading phase unblocks the UI thread and begins background processing of the remaining load tasks. If the user's actions present a need for an unloaded project, VS will move that loading process to the forefront before continuing the background loads.

Compile-Edit-Debug Loop

Finally, Tim Wagner from the Visual Studio Ultimate Team described the changes made to the routine "compile-edit-debug" cycle. Wagner comments that the VS released at //BUILD was intended to be functionally complete while performance was going to be targeted for improvement by the VS 11 Beta release. Unfortunately Wagner's comments focus on the performance of Metro app development on Windows 8, which represents VS11-specific functionality that prevents comparisons to previous versions of Visual Studio.

Ayman Shoukry, Lead Program Manager at Microsoft, provides some hints on C++ performance, stating:

On the VC++ compiler & linker side, we have multiple improvements especially multithreading the compiler for Dev11. As a result we have seen large compile time improvements when building some of the large internal MS products. We will follow up with a more detailed blog about build time improvements in Dev11 VC++.

While these improvements have not been disclosed yet, Wagner did have a promising follow up:

Reporting on our progress here doesn’t mean we’re satisfied with performance in Beta – we intend to keep pushing for as many perf wins as we can get in Dev 11.