What tools can I use to determine the hardware requirements of my application?

Tom Wright picture Tom Wright · Jul 12, 2010 · Viewed 8.5k times · Source

For regular readers: The saga™ continues...

My app runs fine on my development machine - which was purchased (5 years ago) as a fairly good gaming rig. As such, it's 64bit, has a 2.2GHz clock-speed and has 2GB of memory.

The machines at work however, are standard Dell issue office computers and really struggle to even start my app, let alone run it.

(Explanation... I can imagine people screaming at me: "What on earth are you doing to require a spec like that?" Well, I'm doing a lot of real time image analysis and audio generation. So there.)

Our team has the budget to buy a dedicated laptop (needs to be portable) to run it on. So now I've been tasked with generating a minimum required spec.

What tools can I use to determine the lowest spec capable of comfortably running my app?

Update: The answers so far, whilst useful, focus more on alternatives to profiling. So I've put up a bounty to see if there is any software that'll do this sort of thing.

Answer

Matt picture Matt · Jul 18, 2010

Do you have access to a good profiler? I think it would be worthwhile to understand the performance bottlenecks in your application. If it turns out that your application is CPU bound, then you'll obviously want to consider splurging on a high-end processor. Is the application multi-threaded? If so, is your application taking advantage of multiple processors or is it getting serialized because of synchronization?

If the application is IO bound, perhaps you should instead consider getting an SSD drive.

Perhaps the app is spending too much time paging? etc...

If you have access to Visual Studio 2010 Ultimate, I'd recommend checking out the Concurrency Profiler. It will help you visualize what's happening in your program and identify the performance bottlenecks. It will show you where your app is spending time: waiting on IO, memory management, etc. While this tool certainly won't tell you what the minimum hardware requirements are, it should give you a good idea of what hardware improvements will help your app perform better. If you don't have VS2010, you could probably conduct a similar analysis with any good profiler. The cool thing about the Concurrency Visualizer is that it focuses on exposing concurrent and multi-threaded performance problems.