Andrew Arnott

Principal Software Engineer, Visual Studio Platform

Principal Software Engineer and OSS contributor. Visual Studio Platform.

Post by this author

Immutable collection algorithmic complexity

I received some feedback from my recent BCL blog post on the prerelease of the immutable collections that my algorithm complexity table left a few important entries out. Here is the table again, with more data filled in (particularly around list indexer lookup and enumeration): A noteworthy trait to call out here is that where a List<...

The cost of context switches

Context switches are not free. But how expensive are they? I wrote a small program to find out, and I’m sharing the program and its results here. I focused on purely context switches (no work is actually performed between context switches). So it’s not a real-world scenario, but it really brings out the hidden costs. Below are the results...

Immutable collections now available

In previous posts, I discussed immutable collections. I’m pleased to say they are now available. Read my announcement on the BCL blog...

Update to Visual C++ 2012 Debugger launch extension template

A few days ago I posted about an updated Visual C++ 2012 debugger extensibility project template.  Since then, I realized it had a couple of issues that prevented it from working out of the box.  With those fixed, I also added a demonstration of how to read project properties that aren’t specifically dedicated to debugger ...

Enable C++ and Javascript project system tracing

I’ve previously posted on how to enable logging in the C++ project system in Visual Studio 2010.  In Visual Studio 2012 we’ve changed the way the Common Project System (aka “CPS”) emits trace messages so below I introduce an updated xml snippet that works in Visual Studio 2012.  Since CPS is now the project system driving JavaScript ...

Visual C++ 2012 Debugger Extensibility

Back in Visual C++ 2010 we introduced debugger extensibility so that third party vendors can either add new debugger engines or new ways of launching existing debugger engines for C++ projects.  In Visual C++ 2012 this debugger extensibility has been updated.  Any previous extensions that were compiled against Visual C++ 2010 will...

Immutable collections with mutable performance

In my last post, I detailed the differences among read/write, read only, frozen and immutable collection types.  I described how immutable collections come with a hit to the garbage collector due to the garbage they generate during mutations.  I have a very positive update on that topic. My previous implementation for the ...

Read only, frozen, and immutable collections

[Update: a more recent post with new data on attainable performance of immutable collections] The topics of immutability and functional programming has fascinated me lately.  Mostly because of my work on the Visual Studio Common Project System (CPS) which is a large, highly multi-threaded code base that only remains sane because of its...

VC++ Debugger Extensibility

Visual C++ 2010 includes a debugger extensibility point that makes it easy for people who have written their own debuggers, or wish to modify the way existing debuggers are launched, to do so.Check out the Visual C++ Debugger Launch Extension project template on the Visual Studio Gallery to get started...

How to force Vista to NOT elevate an application

User Account Control, the feature in Vista that causes installers and some applications to require "elevation" to administrator privileges to run, cuts both ways.  It's designed to protect users from apps that try to make system-level changes by giving the user the heads up that it's about to happen and gives the user the chance...