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 |
Conclusion
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.