c++ vs c#,性能方面的选择(VS2010)
本文关键字:选择 VS2010 方面 vs 性能 c++ | 更新日期: 2023-09-27 18:09:37
我正在开发一个将用于读取、处理和显示数据的工具。我对c++和c#之间的选择感到困惑。我只做过c++控制台编程。没有GUI或c#。
我将使用VS2010(强制)。
我在网上读了很多书。我知道当谈到高性能时,c++是最好的选择。我会列出我需要的东西:
- GUI
- 读取文件(一个文件约为25mb,每次可能使用约5000张图像进行进一步处理)
- 数据处理。主要是数学运算。
- 显示数据。这些可能又是沉重的数据。~ (GBs)。我正在考虑使用OpenGL。
我开始使用vc++下的Windows窗体应用程序。我做了一个GUI,它相当快。我在阅读文件时遇到了一些问题。我周围的大多数人都在使用MFC(基于对话)。但它们主要用于固件编程。他们建议我在MFC发展。但我意识到我的效率下降了。
现在就看我用什么了。所以我的问题是:对于这个工具应该执行的任务,是值得去MFC还是更好,我转向c#(或c++ CLR)。如果我在性能方面取得了显著的进步,时间就不是最大的问题了。
这是开发的第一部分。之后,它需要扩展。记住这一点,什么对未来的前景更好。(如果此信息有用,我们可能需要使用CUDA进行处理。)
我希望我讲清楚了。如果需要的话,请温柔地询问更多的细节。
编辑:
谢谢你的明确回应。读取的数据是二进制映像(每个映像25 MB~ -35 MB~)。数千张图像被堆叠和处理(不是一次全部处理,而是逐像素处理)。我已经在MATLAB中实现了它,所以我对这个过程有一个很好的想法。主要对数据进行统计分析和傅立叶分析。最后生成一个点云。我正在考虑使用PCL(点云库,这是在c++)。这些不是很大,因为我现在在MATLAb中显示。将来,文件可能会变得更大,所以我们将转向c++/c#环境。显示的数据需要有功能,如选择点,并显示选项,以显示特定点的属性/绘图等。图形显示不重,但更重要的是选择功能的能力。
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#可能更容易、更快捷。