开发者

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

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 pr开发者_开发技巧ofiling. So I've put up a bounty to see if there is any software that'll do this sort of thing.


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.


Nothing beats real world testing...

Try running your app on a variety of hardware and come up with a recommended minimum based on YOUR PERCEPTION of acceptable performance.

Note: There is often a big difference between absolute minimum hardware requirements and recommended minimum acceptable requirements (which it sounds like is what you are really after).


One option is to create a series of virtual machines with varying system configurations and try your app out in each (you will want to do this on a high-performance machine). That way, you can adjust the amount of memory the VM has, the CPU type, etc and simulate testing the software on a variety of systems. While testing, you can use the Windows Task Manager to see how much of the host CPU and memory your app is using. For a comfortable experience, you will want your app to fit within physical memory as much as possible (plus about 1-1.5 GB for the OS and other background services).

Also keep in mind whether your app has any features that require hardware support (DirectX 11, CUDA, etc) and make sure that you include that in your hardware requirements.


From the brief info it doesn't sound like your PC is a particularly high spec. What spec are the Dell machines you've seen run it slow?

I'd try another PC in case the 'work' machines are just bad software builds (guessing standard XP disk controller drivers etc).

I wouldn't generally recommend going down the VM route as really that's only any good for constraining RAM usage. If however you need to check alternative OS's / Service Packs then VMs ARE a good way to go.

Lastly you say the app is slow to load, what is it doing on load? It may be an idea to look at the performance monitors to see whether it is disk, RAM or CPU constrained. Use Google to find useful counters for monitoring each.


Forgive me for stating the b*****g obvious but:

Use YOUR software to check the hardware requirements for YOUR software.

I don't quite understand why the spec of your development machine isn't simply the required spec for the laptop you propose to buy. But if that's not good enough for some reason, run your software on some hardware with other specifications. You could, for example take 1GB RAM out of your development machine to see how things go with less memory available.

There is a huge amount of benchmarking software available for all sorts of tasks. For example LINPACK is much used for benchmarking supercomputers. The flaw in all of these off-the-shelf benchmarks, and in the approach in general, is that they only give you good information about how a computer runs the benchmark. Transforming benchmark results into predictions of performance of hardware with your software is more an art than a science. In the supercomputer world organisations benchmark their own key applications on new platforms before purchasing.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜