Help choosing a programming language / environment for high performance 3D chart object.

RyanH11
RyanH11 used Ask the Experts™
on
Greetings all,

I've been hitting my head against a few walls because I don't know enough about the different options to know that my choice of development environment will be the right one.  As only a moderately capable programmer, it will take some time for me to develop skills and understanding and while I enjoy the journey, I would prefer to be more productive with my time.  

Here's the problem:
I am looking to create an interactive charting control for displaying candlestick financial data as well as line graphs, density maps and some similar types of visualizations.  I am looking to feed about 8 million data points into memory and there will be lots of automated characterization of the data and comparisons based on filtering and sorting.  This will form part of a broader analysis application that will see its primary use for identifying and analyzing behavioral patterns in financial data.  I have experimented with lots of charting controls to date and performance has been severely inadequate in every case but one and it doesn't provide the flexibility I need.

Up until now I have done my programming in VB.Net.  It has been great, I've enjoyed it and I've developed some very impressive applications with it.  I would love to continue to use it but whenever I look into high performance and graphics, VB.Net is not an option.  Anyway, life goes on.  I could see C# as a fairly easy step away from VB, but will that help?

In my mind, I am thinking that using GPU's will give me the best performance for now and the foreseeable future.  I also believe that the type of memory operations I am performing will benefit significantly from using pointers.  I understand that C# has some capability to optimize in this area, but C++ will give greater freedom and control.  

Is C++ is my only real option?

Would using a game engine like Unreal, CryEngine or similar give me a shortcut to taking advantage of GPU's and in creating a visually impressive environment?  Things such as collision detection and even a framework for AI may have some advantage for my application.

Finally, would using XNA give me performance within a respectable margin of C++?  I feel that C# and XNA would perhaps be the easiest progression for me as a programmer.

In amongst all of this, does the new version of Visual Studio (v11) change anything?

I look forward to your comments and insights.

Ryan
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Commented:
I believe that the optimization that the compiler does for C# is much better than the average C++ programmer can do himself. Also considering budget and time, C# will be a lot easier.

You mention GPU processing and visuals, I would recommend the Open Toolkit Library which wraps in OpenGL, OpenCL [and OpenAL]; OpenGL for visuals and OpenCL for computation.

http://www.opentk.com
Top Expert 2016
Commented:
i am a c and c++ programmer, so my choice would be one of those. you are a vb programmer and you could go to c# what is a - as you said - a fairly easy step. but - better - you still could develop parts in vb.net cause  vb.net and c# share the same intermediate code and so you could choose that language (also managed c++) which is suitable for an individual task - at least at the beginning. on a long run i only would use one language.

for the grahic library i wouldn't use a game engine - beside you want to make an adventure out of your results :)  . For normal charts windows forms gdi+ would be good (and fast) enough. but there are also more comfortable libraries such as Graph2, Glee, QuickGraph, GrapfWiz and more.

if you want to do more native graphic programming or have special requirements you could go opengl or direct3d but i would not begin with those if you don't have experiences.

Sara
Commented:
If you are a VB.net programmer, you will recognize a lot of C# because it is yet another .net language.  If you are a VB programmer (i.e. VB6/VBA/VBScript),  C# is a new language.  Worth learning - also lots of people to help you from all around the world.

Choosing a vendor based language has drawbacks - there is no standard and a new version comes out every 2 years.  By the time VS11 comes out, you'll be on .net fw 4.5.  The upside is there are loads of experts out there.

C/C++ are quite good as well; again loads of experts.  I'd just stick to one language either C# or C++.  If you mix the two, you're asking for trouble.  There is always a C# way of doing C++ code.  Similarly there is a C++ way of doing C# code.  Just because examples of a certain technique are always given in C# doesn't mean that it cannot be coded in C++.

Programming GPUs is the same in any language - you basically work out the GPU commands in a C-type language and then download them.

XNA is OK as long as everything is graphical.  It isn't a good route as, like Direct X, MS may suddenly stop supporting it in favour of new technology.  It is more efficient than GDI but the down side is that there are no buttons, listboxes etc.  You have to build your own.  With GDI, if you draw to bitmaps and use triple buffering, then it is very fast: you don't even need to lock the buffers.

Don't use GDI to write to the screen directly - that is extremely slow even though lots of experts will tell you that MS has made it very efficient as they've been at it for 25 years.  25 years? I work on legacy code so I know what happens with 25 year old code - if it ain't broke don't fix it.  It is a pain trying to work out little areas to issue invalidates - far easier and faster to do an entirely new bitmap and just blt it.

Author

Commented:
Thanks all for your responses,  

I'll start bashing the different parts of my project against the C++ / OpenGL route and see what emerges.  The big problem I have is finding programmers that can appreciate the full scope of my project.  I need to know enough to manage it, but I want it done a lot sooner than it would be if I programmed the whole thing.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial