Friday, June 19, 2009

Coderush 9.2.0 Speed and Memory Improvements FTW!!

Recently Mr Mark miller posted on his blog about how much more efficient the next version of CodeRush was going to be.

In summary -> ZOMG This will be so cool".

So at the earliest opportunity, I requested access to the latest daily build of said product and was granted access

A few notes up front:

  • If you’re going to try this out, you need to uninstall 9.1
  • This version of 9.2 is a TRIAL version. It will expire eventually. Not sure when. I didn’t ask.
    • *YOU CANNOT* install this as a registered user… Nobody (Including me) has been given this level of access.
    • *Install as Evaluation* It works just as well :D
  • This is not the release version. It is a daily build. It did not go through the usual levels of testing.
  • There is a bug in this version which prevents some things from working unless you have installed everything (including the free bits)
  • The timings below were not done using a stopwatch but by me counting (1..1000..2..1000)

I have a solution I use every day at work so I thought I’d use that as the basis for my testing.

Some facts about this solution

  • It’s written in
  • It contains 13 projects (6 Class libraries, 7 Webapps/Webservices)
  • There are no project references in this solution
    • This is strange I know.
    • Instead we reference dlls built using nant as a part of our external build process.
  • According to this LOC program my solution has…
    • Number of lines = 61,358
    • Number of code files = 503
    • Number of code-generated lines = 6,563
    • Number of user-entered blank lines = 4,355
  • The .vb code files total some 3.5 MB(ish)

Some facts about the machine I use at work

(click Image for large version)

(click Image for large version)

So first I needed a baseline. I disabled all addins and re-loaded studio.

Studio at rest with nothing loaded, occupied [34,020 - 50,684]

(Note: Figures represent the values shown in Process Explorer for Private Bytes and Working set respectively)

I loaded my solution and timed how long it took to reach zero CPU usage within process manager.
It took approx 15 seconds to load my solution and afterward memory usage had risen to [150,740 - 193,556]
I built the solution and memory raised a little further to [170,640 - 209,184]

So this was the baseline.

What followed was several repetitions of this procedure inserting the loading of CodeRush 9.1 and 9.2 into the sequence.

In each case I restarted studio and reloaded CR where appropriate.

I will not detail everything here, but will present the summary figures.

(click Image for large version)

So how does this break down?

Well basically it’s all in the bottom right hand corner.

So for my modest project… (after having built an on-disk cache during the first load of any given solution)

  • CodeRush has practically eliminated any previous overhead it added to the solution‘s load time. So it’s now as quick to use CodeRush as to not use it. :)
  • CodeRush saves between 45.2% and 58.5% memory depending on how you choose to judge it.

It is worth noting that these memory savings are likely to skyrocket as the complexity of your software increases.

Indeed, I have already seen a post on twitter from a user who has something more like 80% savings on memory.

I know I’m happy with my results … How about you ? … What results do you get ? :)

1 comment:

Alex said...

By the way,what is difference between CodeRush 9.1 and 9.2? What is better, 9.1 or 9.2? I need the review. Thanks.