运行时速度汇编与 Arduino 上的 C/C++ 的差异

Difference in runtime speed assembly vs. C/C++ on an Arduino

本文关键字:C++ 上的 速度 汇编 Arduino 运行时      更新时间:2023-10-16

我听说在汇编中编写Arduino应用程序可以使程序是实时的,而用C或C++编写应用程序会使程序比这慢。

如果这是真的,这意味着对于不同类型的Arduino应用程序(高速应用程序与非速度关键应用程序),应该使用不同的编程语言。

我真的想知道当 C/C++ 代码高效编译时,这句话是否成立。

这是关于所有编程的一个非常普遍的问题,它根本不是Arduino特有的。

让它可能更频繁地弹出的是,基本Arduino的性能有点有限,而且它是一个嵌入式平台,低级操作非常普遍。

有时,与在高级语言(如典型C++)中相比,通过更直接地使用处理器的功能,您可以在汇编程序中更有效地表达此类操作。

Arduino 库包含汇编代码是很常见的,以便更轻松地从C++使用高性能功能。

一般来说,汇编语言在执行时间方面总是比任何编译语言更有效,只是因为编译语言的性质。 相比之下,编译程序通常比汇编程序更不"脆弱",因为高级语言往往具有更多的错误预防和捕获功能以及数据管理(其中一些是从最终代码中优化出来的,如类型检查,其中一些仍然存在,如数组管理)。

我的阅读表明,就执行速度而言,Forth 是最接近汇编的,接近汇编速度的一半。 就结构相当传统的知名语言而言,C 是最有效和优化最好的语言之一,所以如果你对 Arduino 汇编程序不熟悉,C 可能是最好的选择 - 但它总是比汇编程序慢。

这通常适用于所有系统:在汇编中编写可以更快。这主要与高等语言具有开销这一事实有关,这使得它们更安全,更通用,但代价是速度。通常编译器可以使代码在编译过程中高效,但我认为Arduino目前没有这样的功能,或者它们不够先进。