Is .NET good for high volume numerical computing?

  • Thread starter Thread starter YeeCN
  • Start date Start date
Y

YeeCN

Hi,

I need to write an application that requires HUGH volume of number crunching
(tens of billions of calculations). Speed is the single most important
factor for me.

I am wondering is .NET (vb, c#) the right framework to develop the
application so whether I should look somewhere else.

Any help or suggestions is greatly appreciated.

Best regards,
Yee
 
Hi YeeCN,

Did you ask this question also in the newsgroup

microsoft.public.dotnet.languages.vc

I think those guys can give you a better answer on this.
They have the posibility to use managed and unmanaged code.

I would ask if it is a good idea to do your application in "managed code"
and then the program language is not important anymore.

And than you should tell of course something more I suspect, because now
your question has to few information for a good answer in my eyes.

Also is of course important if the computer that you are using work with the
dotNet framework.

I hope you get your answer,

Cor
 
YeeCN:
YeeCN said:
Hi,

I need to write an application that requires HUGH volume of number crunching
(tens of billions of calculations). Speed is the single most important
factor for me.

I am wondering is .NET (vb, c#) the right framework to develop the
application so whether I should look somewhere else.

Any help or suggestions is greatly appreciated.

Best regards,
Yee

That's kind of a vague question, but let me give you some general
observations. If pure speed is your goal and nothing else, then write your
program assembler or machine langauge. Those are going to have the least
overhead. C, C++ are going to be the next fastest and written correctly,
you should be able to squeeze out some amazing performance. Managed
languages like .NET (VB.NET, C#) and Java are abstracted quite a bit so they
aren't going to run as fast as something written in assembler all else being
equal.

However, You can definitely write high performance apps in .NET. You can
also write painfully inefficient apps in Assembler. The langauge does have
an effect, but for the most part, they way things are coded have much more
of an impact. When you throw a database in the equation, this distinction
becomes even greater ( I couldn't tell if this was the case with your app or
not).w

I would really focus on design more than the language b/c speed is one
component, but maintainability , accuracy, ability to find and fix bugs easy
etc all factor into the equation and trust me on this ;-).... .NET scores a
lot higher in these regards.

And if your question is basically "Can I write a calc intensive app in .NEt
that will perform well, then answer is yes unless you have really extremem
definitions of perform.

If you can tell me a little more about the specifics and what you are
ultimately trying to do, I can be of more help.

HTH,

Bill
 
I need to write an application that requires HUGH volume of number
crunching
(tens of billions of calculations). Speed is the single most important
factor for me.

I am wondering is .NET (vb, c#) the right framework to develop the
application so whether I should look somewhere else.
Use VC++ 2003 and then you can create managed (using .NET)/unmanaged (using
normal exe code) applications.
This way you have best of both worlds. Group you performance sensitive code
into one managed class and call it through a managed class wrapper.
But try to avoid managed/unmanaged transitions, in the performance loop.

Use Assembler with MMX, SSE and SSE2 optimized code for the most performance
sensitive functions. Make these functions Monolythic (one function dedicated
for that specific job, and not calling other functions). Avoid new and
delete as much as possible, within this function. Try to avoid loops, since
it stalls the processor when it has to jump back to the start of the loop
(prefetching)....
 
Thanks for the many replies, and sorry for not being specific.
The problem I have is actually to simulate the behavior of loans based on
their profiles. I have to design something that can churn through 10millions
records over 10 X 12 months in 'reasonable' time.

There is a going to be a high amout of decision making and complex logic.
Assembler is definitely out. C# unsafe codes is looking promising at
present.

I also found the following useful article:
http://msdn.microsoft.com/msdnmag/issues/04/03/ScientificC/default.aspx

Now I have the task of balancing between hardwiring the decison tree vs ease
of changing the decision tree structure later. Sigh.


Thanks again.

Best Regards
Yee
 
Back
Top