Friday, October 23, 2009

Windows 7 Is Winning (Some Surprising) People Over

linuswin7_084F3D27

Yup, it’s Linus alright.

(OK, he did it for a joke – he didn’t buy a copy surprisingly :) )

Tuesday, October 20, 2009

.NET DLL’s Duplicated In Memory

For reading RSS feeds I use RSS Bandit which is just fine for my needs. However, I’ve often felt that RSS Bandit isn’t the most resource friendly application; on my Windows XP system with 1GB of RAM, it can feel a bit sluggish. Well this evening I thought I’d use VMMap from Sysinternals to see how much memory RSS Bandit is using – and in doing so I found something very odd.

image

The above view is a portion of the images section of RSS Bandit’s virtual memory space. Notice the duplicate DLL files loaded in memory, there are many other DLL duplications appearing, wasting a lot of memory. I counted about 28MB of memory was being wasted by duplicate DLL files. The most notable thing about this, is that all the DLL files are .NET DLL’s.

Now this actually rang a bell with me, since in the back of mind I thought I had read something about this on a forum. After some hunting around I found the original Sysinternals forum post where I had read about this duplication issue. It turns out that Microsoft have been notified about the problem and are looking into it.

Problem is that a fix won’t be coming anytime soon. If you read the last post for the Connect bug report, by Aarthi Ramamurthy, you’ll see that MS have anaylsed the problem and decided that it’s too large a change to do anything about it right now.

Sunday, October 18, 2009

TypeMock Isolator 5.4.2 Released.

Hot on the heels of version 5.3.5, Isolator 5.4.2 has just been released. The new feature of this release is Intellitest which is a tool to help developers create the arrange section for tests. (AAA – Arrange, Act, Assert). So how does this Intellitest work? Well there is some sample footage of it in action here and here. I was just trying it out now with a simple class library.

So I have an interface like so:

namespace ClassLibrary1
{
    public interface IPerson
    {

string GetFirstName();

string GetLastName();

    }
}

which is used by this class:

namespace ClassLibrary1
{
    public class Class1
    {
        public string DoSomething(IPerson p)
        {
            return string.Format("{0} {1}", p.GetFirstName(), p.GetLastName());
        }
    }
}
I go ahead and create a unit test project and start writing my test:

[TestMethod]
public void GetSomethingTest()
{
    Class1 target = new Class1();
    target.DoSomething();
}

The cool stuff happens once I put the caret in the method call for DoSomething() I get this window appear:

image

I can now choose to create a fake IPerson to pass to my DoSomething(), which Isolator takes care for me by automatically inserting the code needed to perform the faking:

image

This has great potential, by adding functionality that can speed up the creation of the arrange code for developers, I think TypeMock are adding another great asset to the Isolator feature list.

At the moment, Intellitest only works with interfaces, but classes will be supported soon. I can’t wait to see what’s in store when this feature matures. Though my only concern is that, with a recent increase in price for Isolator, that Intellitest doesn’t

  • Increase the cost of Isolator even more.
  • Becomes a separate product that you have to pay for.

Chances are one of the above options will become a reality. Personally I hope they choose the second option, since I’d rather pay for Isolator with the current feature set, and have the option to purchase Intellitest if I really wanted it.