c# - C++ 比 C# 快多少?

标签 c# c++ performance benchmarking

还是现在反过来了?

据我所知,在某些方面 C# 被证明比 C++ 更快,但我从来没有勇气亲自测试它。

认为你们中的任何人都可以详细解释这些差异或指出我到正确的位置以获取这方面的信息。

最佳答案

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

所以在很多情况下,C++ 更快。但这只是答案的一部分。 C++ 实际上更快的情况是高度优化的程序,专家程序员彻底优化了代码。这不仅非常耗时(因此代价高昂),而且通常会因过度优化而导致错误。

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

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

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

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

关于c# - C++ 比 C# 快多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23709077/

相关文章:

c# - 编码 LPSTR 和 float 时堆栈不平衡

c++ - 对 struct sockaddr_in 的调用不匹配

Javascript switch 与 if/else

c++ - 执行 Shell 命令时的性能问题

c# - Visual Studio 2012 中自己的双选项卡模板

c# - 如何将下拉列表项设置为在 ASP.NET 中选中?

java的synchronized关键字的C#版本?

C++ 编译错误只有一个候选函数

c# - 如何使用无限循环实现单例模式 - C#

php - MySQL curdate() 和 now() 与 PHP date()