6

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

我将使用 VS2010(必修)。

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

  1. 图形用户界面
  2. 读取文件(一个文件大约 25 MB,一次可能使用总共大约 5000 张图像进行进一步处理)
  3. 处理数据。主要是数学运算。
  4. 显示数据。这些可能又是沉重的数据。(〜GB)。我正在考虑为此使用OpenGL。

我从 VC++ 下的 Windows 窗体应用程序开始。我做了一个图形用户界面,它相当快。我在读取文件时遇到了一些问题。我周围的大多数人都在使用 MFC(基于对话框)。但他们主要从事固件编程。他们建议我应该在 MFC 中开发。但我意识到我的生产力下降了。

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

这是开发的第一部分。之后,它需要扩展。牢记这一点,什么对未来的前景更好。(如果此信息有用,我们可能需要使用 CUDA 进行处理。)

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

编辑:

感谢您的明确答复。正在读取的数据是二进制图像(25 MB~ -35 MB~ 每个)。成千上万的图像被堆叠和处理(不是一次全部,而是逐个像素)。我已经在 MATLAB 中实现了它,所以我对这个过程有一个很好的了解。主要对数据进行统计分析和傅里叶分析。最后生成点云。我正在考虑使用 PCL(C++ 中的点云库)。这些不是很大,因为我现在正在 MATLAb 中显示。将来,文件可能会变得更大,因此我们正在迁移到 C++/C# 环境。显示的数据需要具有诸如选择点和显示选项以显示该特定点的属性/绘图等功能。图形显示并不重,但更重要的是选择特征的能力。

4

1 回答 1

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# 可能会更容易和更快。

于 2013-04-16T10:03:20.593 回答