Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to build a system in order to run one particular specialised program as fast as possible (currently it can take up to 50 hours to do a run on my laptop with an I5-processor).

The program is written in VB6, does a lot of data/number crunching, and uses only one core. However, there is a batch file where I can open as many instances of the program as I like, and the batch file then collates the resulting information back as though it were all just one run (sledgehammer approach, I know).

So the two things I've found so far that help speed are more cores, and the speed (GHz) of the processors. If the processors use turbo to increase the speed then they seem to need one or two unused cores to make use of it.

I don't want a server, so what should I be looking for (in a computer) when designing/specifying a system to do this?

share|improve this question
Your question will be closed as a shopping recommendation as is, however you are VERY close to being a valid question. Please rephrase your question to "what should I be looking for in a computer to do this" instead of the current "What computer should I get to do this". As a site, we want questions and answers that are still valid in 6 months. If we tell you what to buy, the info is useless in just a few months as the computer may not be even sold anymore. If we tell you what to look for, that info stays relevant. – Scott Chamberlain Apr 4 '13 at 22:50
Find a different program, VB6 is your bottleneck. There have been tests done, and using .NET VB or C# can net you 50% increase in speed. – Logman Apr 4 '13 at 22:54
I'd love to. But I'm just the user, it looks like it will be rewritten in C#, but that could be a couple of years away... – Rodney Apr 4 '13 at 22:59
VB6 is an interpreted language AFAIK so it's going to run very slow for number crunching tasks compared to C. Can it be rewritten or is there an alternative product that does the same thing and can utilise multiple threads too? – Matt H Apr 4 '13 at 23:00
Rodney, in that case look for a CPU that has fewer cores but higher clock speed. The Intel CPU's are very good at number crunching. – Matt H Apr 4 '13 at 23:01
up vote 2 down vote accepted

"The program is written in VB6, does a lot of data/number crunching, and only uses one core" Oldschool style! There's a few things you'd want to take into account here. Firstly, that most of the modern extensions won't do you much good, so you're looking for sheer single threaded speed.

"So the two things I've found so far that help speed are more cores, and the speed (Ghz) of the processors" GHZ, sadly enough is not a great indicator of speed these days. Architectures used by modern systems diverge wildly and you might end up buying a system that performs less well based off speed. While I realise there may be good reasons for not rewriting the program, using a modern language, modern processor features, and programming the application to take advantage of parallel processing (or maybe even a GPGPU) would massively increase the speed you're running things at.

I'd probably look for a benchmark that does single threaded performance against cost - passmark has one and it should help you make an informed decision. I used a google search to find it - I used the term 'single thread performance;. I note that the best processors for the price all seem to be intel. Don't forget to test the application with and without hyperthreading turned on, since many applications don't do that well with HT.

Another approach I'd consider is an array of smaller, cheaper computers which might cost less than a more expensive system, since this task seems to be 'trivially parallelisable'. You might even want to try using amazon EC2 to offload and do the calculations, then re-combine it at your own desktop. Depending on the running time of each program instance, you might even be able to do this with the free tier.

For a more scientific view of what is actually bottlenecking your program, take a look at xperf. I'm unfamiliar with it, so I can't help much there, but there's plenty of good information out there, and should help you work where exactly you need to put more resources into.

share|improve this answer
Thanks Journeyman, very helpful – Rodney Apr 4 '13 at 23:11
I've added a mention of a tool that should help you work out exactly where the bottleneck is - its called xperf or windows performance toolkit. Asking a question on its use in your particular scenario might be interesting, since I personally haven't used it, and it should help you find exactly where you're bottlenecking at any point. – Journeyman Geek Apr 5 '13 at 6:14

You're lucky. Because you can take advantage of multiple cores, one of the most popular measures of CPU performance, the PassMark CPU Benchmark should do a good job. You can just pick the CPUs with the highest PassMark CPU ratings.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .