Friday, April 30, 2010

How much faster is CodeRush ?

Recently DevExpress released a video which compared the rename functionality in CodeRush to that of in of it’s competitor products.

There then followed some discussion on Twitter, about how valid the tests were.

Questions were raised like “Why would anyone want undo like that ?” and comments were made like “He probably used a pre-release version of ‘Brand X’ productivity tool. They’re always slower than the RTM versions”.

These are potentially fair points. Lets see if we can address them.

“Why would anyone want to do that?”

First up “Why would anyone want undo like that” . Now I must confess I’ve can’t now find the tweet in question in order to quote this properly, but the person who mentioned this appeared confused about why anyone would want to do an undo at that point in time.

[To put this statement in context… the DevExpress Video shows a rename of a local symbol using the Brand X product, occurring at approx 0:30 of said video, and then shows the effect of trying to undo this at approx 0:40]

Why should being able to undo something be unnecessarily restricted. I frequently get called away in the middle of something, come back, wonder what I was doing exactly. Sometimes undoing and redoing is a good way to remember.

In any case I don’t think there is any point at which it should be suggested that undo is unreasonable. If your tool is telling making anything that you do this awkward and error prone, IMO you should re-evaluate if it’s helping you or not.

Bottom line: This clearly works in CodeRush… It clearly doesn’t work in Brand X.

“It was probably an unfair test using a pre release version of Brand X”

Well I can see why some people might think this. DevExpress did this test, and they did it on a one of their own solutions. This does make it kind of hard to verify independently, since they’re hardly about to hand out the source of CodeRush :D

…and so I decided to do my own test :)

You might say that I am biased also. However the test I conducted is reproducible by anyone who cares to do so using their tool of choice.

  • I started by selecting an open source project that anyone could get hold of. I chose Paint.Net version 3.5.5
  • I then downloaded the latest version of CodeRush 10.1 (This will soon be available to anyone as RTM is imminent) and the latest version of Brand X (Available from their main page. Can’t get less pre-release than that :D)
  • Both tools were installed and in each case, whilst a test was being done, the opposing product was disabled.
  • I restarted Studio for each test and allowed the CPU to settle after loading the solution before starting the test.
  • I used a quad core machine with 2GB RAM (Yeah I know I need more RAM) running on Win7 x64 (My home machine)

And so I looked around for something in the solution which would have a lot of references.

After some fairly casual looking around, I couldn’t find anything with more than about 50 references. Then I had a brainwave…. I’d rename the main namespace. [Note:CodeRush took all of 4.1seconds to tell me that there were some 416 references to this in 197 files.] This seemed like it would be enough of a test.

What followed was a fairly boring, so frankly I’ll skip straight to the results:
[Note: If you’re interested in the details, they’re pretty much the same as the CodeRush Video at 01:53]

Product Time to rename
CodeRush 22 seconds
Brand X 4 minutes and 28 seconds


So with the latest versions of each product, and a test you can reproduce yourself if you really want, to my conclusion is:

Mark Miller is wrong.
CodeRush is not 10x faster than Brand X….. It’s 12x faster :D

With a difference this big… I couldn’t just have made myself a Coffee…. I could have ground the beans myself.


Jorge Rowies said...

Man, very nice post. (definitely Brand X should change it's name, they won't sell anything with such a generic name :P )

Eddy Young said...

I've got a licence to a previous version of Brand X. Let's just say that I am not using nor upgrading Brand X because I've found it to be more hindrance than assistance lately.

Duncan said...

I don't tend to rename objects across that many files anyway, but I have used both products, I use brand x currently because of the code analysis, which CR has only just added, and every version I have tried so far donsn't play nice with mspec (it marks the code as faulty!)

Demos like this don't actually tell me much, I might switch if CR gets the code analysis right although its price point is a lot higher than brand x (over the lifetime of the product almost 4* which is also something to think about.

Mark said...

Brand X price is $342 for a commercial license on ComponentSource. CodeRush is almost $100 cheaper at $249.

Alex.. said...

Well, having used both products I didn't doubt the veracity of either Mark's or that video. Not for a pico-second.

Besides, I think that if DX were gonna "fake" it, they wouldn't have made it so obvious...

Ian Holmes said...

Brand X is the market leader because it's simply a superior product in day to day use.

One (unimportant for most devs) use case that CodeRush does well, doesn't change that.

Michael said...

That is a bit of a "childish" comment.

If you want to make such a BOLD statement such as Brand X is better than CodeRush, why not give some points... even one would be good.

I am sure CR lacks in certain areas however to say that Brand X is superior is just a plain joke.

You could say that Rory, Mark and I are bias'd which could be the case, however, CR has a very big offering and if you include the simple way to "extend" the platform by adding your own features then this BLOWS Brand X out of the water.

I would be interested to hear a more "mature" response on why you strongly feel that Brand X is "superior"

Mark said...

Hi Duncan,

> every version I have tried so far
> donsn't play nice with mspec (it
> marks the code as faulty!)

We have downloaded the latest MSpec source and three projects with MSpec tests. CodeRush works correctly on these projects (no false positives reported). We have added these projects to our stress test cases. If you are indeed encountering problems with CodeRush and MSpec we will need some sample code and/or steps to reproduce.