Arduino上运行时速度汇编与C / C ++的区别

时间:2015-01-16 11:07:47

标签: c++ c assembly arduino

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

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

我真的很想知道在有效编译C / C ++代码时该语句是否成立。

3 个答案:

答案 0 :(得分:2)

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

基于Arduino的基本Arduino的性能有限,并且它是一个低级别操作非常普遍的嵌入式平台。

有时,您可以通过更直接地使用处理器的功能,在汇编程序中更有效地表达此类操作,而不是像典型的C ++这样的高级语言。

Arduino库通常包含汇编代码,以便更容易地从C ++中使用高性能功能。

答案 1 :(得分:-1)

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

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

答案 2 :(得分:-1)

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