为什么与 C 和 C++ 相比,C# 代码需要很长时间才能执行

本文关键字:长时间 执行 代码 C++ 相比 为什么 | 更新日期: 2023-09-27 17:56:07

我正在解决一个在线网站上的简单编码挑战。 我已经用 C、C++ 和 C# 编写了代码来解决同样的问题。解决问题后,网站会提供有关正确性和性能的一些统计信息。这是我眼前一亮的东西。C# 代码需要 0.06 秒才能执行,并给我的结果,其中 C 花了 0.006 秒,C++ 花了 0.009 秒。

我的问题是,为什么 C# 代码的运行速度慢了 10 倍?或者事实上,C/C++ 的运行速度提高了 10 倍?

链接到下面的网站。

C 代码
C++代码
C# 代码

我假设所有三个代码块上都有相同的测试用例。

为什么与 C 和 C++ 相比,C# 代码需要很长时间才能执行

C# 被编译为公共中间语言。然后运行实时 (JIT)。本质上,代码是根据需要编译的。C和C++编译成计算机的本机汇编语言。这意味着在运行时不需要发生任何其他操作。虽然这是一个广泛的概述,但我恳请您研究 JIT 和 CIL,因为这将帮助您更深入地了解。您可以在此处查看它们:公共中间语言,恰好及时

没有严格的理由说明为什么具有

JIT 的基于 C# 或 Java 的基于字节码的语言不能像C++代码一样快。然而,C++代码过去在很长一段时间内都明显快得多,而且今天在许多情况下仍然如此。这主要是由于更高级的 JIT 优化实现起来很复杂,而真正酷的优化现在才到来。

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

请记住,像您这样的快速测试并没有多大意义。 C++/C 在很多很多情况下的运行时间与 C# 几乎相同,除了您可能遇到的几乎所有情况。