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

标签 c# c++ performance benchmarking

还是现在反过来了?

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

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

最佳答案

没有严格的理由说明基于字节码的语言(如具有 JIT 的 C# 或 Java)不能像 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/138361/

相关文章:

javascript - 有没有更好的方法来检测 nextUntil 是否定期停止?

java - 如何使用 currentTimeMillis() 方法获取小部分执行时间

sql - SQL-在SELECT中具有多个CASE语句会对性能产生什么影响-Teradata

c# - 如何保证数据一致性

c# - 在 RichtextBox 中对齐

c# - 如果更改是由代码还是用户进行的,如何在 C# 事件中区分?

C# 添加项目,如果它们在日期之间

c++ - 如何使迭代器成为 "automatically dereferenced"?

c++ - 具有 const 成员的结构

c++ - 通过引用传递给 STL 容器的对象的生命周期