一尘不染

C ++比C#快多少?

c#

还是现在相反?

据我所知,在某些领域C#被证明比C ++更快,但是我从来没有胆量亲自测试它。

以为你们中的任何人都可以详细解释这些差异,或者将我指向正确的位置以获取有关此信息。


阅读 536

收藏
2020-05-19

共1个答案

一尘不染

没有严格的理由说明为什么具有JIT的基于字节码的语言(如C#或Java)不能与C 代码一样快。但是,C
代码在很长一段时间内过去的速度明显要快得多,而且在许多情况下今天仍然如此。这主要是由于更高级的JIT优化实现起来很复杂,而真正酷的优化才刚刚出现。

因此,在许多情况下,C 速度更快。但这只是答案的一部分。C
实际上更快的情况是高度优化的程序,专家程序员在其中彻底地从代码中优化了地狱。这不仅非常耗时(并因此很昂贵),而且通常还会由于过度优化而导致错误。

另一方面,在更高版本的运行时版本(.NET CLR或Java
VM)中,解释语言的代码变得更快,而无需执行任何操作。而且,JIT编译器可以进行很多有用的优化,而这些优化在带有指针的语言中是根本不可能的。另外,有人认为垃圾回收通常应与手动内存管理一样快或更快,在许多情况下也是如此。通常,您可以在C
++或C中实现并实现所有这些功能,但是它将变得更加复杂且容易出错。

正如Donald Knuth所说:“过早的优化是万恶之源”。如果您确实确定您的应用程序将主要由性能非常关键的算法组成,并且这将成为瓶颈,并且在C
中肯定会更快,并且您可以肯定C 不会与其他程序冲突要求,请使用C
++。在任何其他情况下,都应首先集中精力以最适合自己的语言正确实现应用程序,然后在运行速度太慢时发现性能瓶颈,然后考虑如何优化代码。在最坏的情况下,您可能需要通过外部函数接口调出C代码,因此您仍然可以用较低级的语言编写关键部分。

请记住,优化正确的程序相对容易,但是校正优化的程序要困难得多。

不可能给出实际的速度优势百分比,这在很大程度上取决于您的代码。在许多情况下,编程语言的实现甚至不是瓶颈。出于极大怀疑,请访问http://benchmarksgame.alioth.debian.org/上的基准测试,因为这些测试代码很大程度上测试了算术代码,这很可能与您的代码根本不相似。

2020-05-19