C#适用于集群计算的重型应用程序?

时间:2010-06-21 21:56:21

标签: c# c++ processing-efficiency

我正准备编写一个光子仿真软件包,该软件包将在一个128节点的Linux和Windows集群上运行,其中一个基于Windows的客户端用于设计作业(类似CAD)并将它们提交给集群。

这大部分都是很好的基础,但我很好奇C#在实际数字运算能力方面如何叠加到C ++。我对这两种语言都非常满意,但我发现C#与.NET或Mono的优越对象模型和框架支持令人难以置信的诱人。但是,在这个应用程序中,为了开发人员的偏好,我不能牺牲太多的处理能力。

有没有人在这方面有经验?有没有可用的硬基准?我假设最终的机器代码将使用相同的技术进行优化,无论它来自C#还是C ++源,特别是因为它通常发生在pcode / IL级别。

3 个答案:

答案 0 :(得分:2)

C#和原生C ++采用的优化技术有很大不同。 C#编译器发出IL,它只是略微优化,然后在第一次执行时JIT转换为二进制代码。大多数优化工作都发生在JIT编译器中。

这有利有弊。 JIT有时间预算,这限制了它可以在优化上花费多少精力。但它也对其实际运行的硬件有深入的了解,因此它(理论上)可以透明地使用更新的CPU操作码和详细的性能数据知识,例如管道危险数据库。

在实践中,我不知道后者有多重要。我知道至少Mono会自动并行化一些循环,如果它发现自己在带有SSE的CPU上运行(可能是SSE2?),这对你的场景来说可能是个大问题。

答案 1 :(得分:1)

我做了一个快速搜索,发现了这个:

http://www.drdobbs.com/184401976;jsessionid=232QX0GU3C3KXQE1GHOSKH4ATMY32JVN

编辑:请记住(在阅读文章时)这是5年前完成的,所以整个表现可能会更好!

答案 2 :(得分:1)