C++ vs C#,性能选择(VS2010)

Nar*_*esh 6 c# c++

我正在开发一种用于读取,处理和显示数据的工具.我对我在C++/C#之间的选择感到困惑.我只做了C++控制台编程.没有GUI或没有C#.

我将使用VS2010(必修).

我在网上做了很多阅读.据我所知,在高性能方面,C++是最佳选择.我会列出我需要的东西:

  1. 一个GUI
  2. 读取文件(一个文件大约25 MB,一次可以使用大约5000个图像进行进一步处理)
  3. 处理数据.数学运算主要是.
  4. 显示数据.这些可能是重数据.(〜GBS).我正在考虑使用OpenGL.

我开始使用VC++下的Windows Form Application.我做了一个GUI,它很快.我在阅读文件时遇到了一些问题.我周围的大多数人都在使用MFC(基于对话框).但它们主要用于固件编程.他们建议我应该在MFC中开发.但我意识到我的生产力下降了.

现在由我决定使用什么.所以我的问题是:对于这个工具应该执行的任务,是值得去MFC还是更好的我转向C#(或C++ CLR).如果我在性能方面获得显着改善,时间并不是最大的问题.

这是发展的第一部分.后来需要扩大.记住这一点,对未来的前景更有利.(如果此信息有用,我们可能需要使用CUDA进行处理.)

我希望我很清楚.如果需要,请保持温柔并询问更多细节.

EDITS:

感谢您的回复.正在读取的数据是二进制图像(每个25 MB~-35 MB).堆叠和处理1000个图像(不是一次全部,而是逐个像素).我已经在MATLAB中实现了它,所以我对这个过程有了一个很好的想法.主要是对数据进行统计分析和傅立叶分析.最后生成点云.我正在考虑使用PCL(C++中的点云库).这些不是很大,因为我现在正在MATLAb中展示.将来,文件可能会变大,所以我们正在转向C++/C#环境.显示的数据需要具有选择点和显示选项的功能,以显示特定点的属性/图.图形显示不重,但更重要的是选择特征的能力.

Lig*_*ker 7

除非您在很长一段时间内讨论大量数据,否则C#和C++将提供几乎相似的性能.在大多数情况下,C++可以比C#提供一小部分时间; 所以它在任何日常应用中都不是很有优势.

但是,在最终性能非常关键的情况下,例如驱动程序或视频游戏,获得的毫秒数和C++提供的手动内存控制是一个明显的优势.对于其他一切,C#通常更容易,更快速地编写和调试.托管代码意味着您在大多数情况下不必处理任何内存分配或释放.我也认为它提供了更"清洁"的代码文件.

.NET中的GUI是在WinForms或WPF中完成的.大多数人可能会指向WPF作为明显的选择,因为它是一个更为年轻的技术,其中一个主要优势是吸引DirectX,这意味着高端计算机将更快地绘制界面.

但是,如果您计划显示大量自定义信息,比方说3D,您可能会发现直接编写DirectX/OpenGL请求更容易.然后,您可以使用SlimDX等包装器,让您的生活更轻松.但是你应该知道,如果你以前从未处理过这种代码,那么学习编写DirectX或面向OpenGL的任何代码并不是一件容易的事.单独的着色器是一个非常特殊的世界.

如果您可以提供有关正在处理的数据以及计划显示方式的更完整信息,我们可以为您提供更完整的解决方案.

更新:

我的猜测,在这种情况下,你不会发现C#和C++之间的性能差别很大,如果你使用外部库进行某些计算,那就更多了.C#和C++都可以使用相同的库.如果图形计算很重,最有可能最好的方法是通过DirectX/OpenGL将它们传输到GPU,但这只会是你想要进行几分钟甚至几小时的密集计算.因此,使用C#可能更容易,更快捷.

  • *但是,在最终性能非常关键的情况下,例如驱动程序...获得的毫秒数和C++提供的手动内存控制是一个明显的优势.*[由于缺乏对内存使用的控制而存在非明显的缺点] (http://msdn.microsoft.com/en-us/library/windows/hardware/gg487420.aspx#EFE). (2认同)
  • 仅当您尚未开始积极优化时,FYI,C++和C#才会相似.C++总是有很大的空间让事情变得更快(更好地控制内存,SIMD等,更好地优化编译器和标志等),但C#做得少得多...... (2认同)