I am developing a tool that will be used for reading, processing and displaying data. I am confused about my choice between C++/C#. I have done C++ console programming only. No GUI or no C#.
I will be using VS2010 (compulsory).
I did a lot of reading on the web. I understand that when it comes to high performance, C++ is the best choice. I will list what I need:
- A GUI
- Reading files (one file is about 25 MB and a total of about 5000 images might be used at a time for further processing)
- Processing the data. Mathematical operations mainly.
- Display the data. These may be heavy data again. (~GBs). I am thinking of using OpenGL for this.
I started of with Windows Form Application under VC++. I made a GUI and it was rather quick. I had some issues in reading files. Most people around me are using MFC (dialog based). But they mainly work on firmware programming. They recommended I should develop in MFC. But I realized my productivity decreased.
Now its up to me what to use. So my questions is: For the tasks this tool supposed to perform, is it worth going to MFC or its better I move to C# (or C++ CLR). Time is not the biggest concern if I gain significant improvement in terms of performance.
This is the first part of development. Later, it needs to be expanded. Keeping that in mind, what is better for future prospects. (we might need to use CUDA for processing, if this information is useful.)
I hope I am clear. Kindly be gentle and ask further details, if needed.
EDITS:
Thanks for a clear responses. The data being read are binary images (25 MB~ -35 MB~ each). 1000s of images are stacked and processed (not all at once, but pixel by pixel). I have implemented it in MATLAB so I have a fair idea about the process. Mainly, statistical analysis and Fourier analysis will be done on the data. Finally a point cloud is generated. I am thinking of using a PCL (point cloud library which is in C++). These are not very big, since I am displaying in MATLAb right now. In future, files might get bigger so we are moving to C++/C# environment. Displayed data needs to have functionality such as selecting points, and displaying option to show properties/plots of that particular point etc. Graphics are not heavy to display, but more important is the ability to select a feature.