【发布时间】:2014-05-15 04:44:23
【问题描述】:
我已经使用 C 对微控制器进行了一些编程,但我喜欢 C++ 以其面向对象的特性带来的直觉。
一般来说,使用 C++ 的主要缺点是什么?除了调用关联的构造函数和析构函数的类实例化和删除之外,与使用 C 的等效实现相比,是否存在大量开销?
具体来说,我比较关心以下几个方面:
- 额外的内存使用 (RAM)
- 需要额外的指令(以及相应的 CPU 时间)
- 存储 C++ 程序(即编译结果)所需的额外内存
【问题讨论】:
-
C++ 遵循“你只需为你使用的东西付费”的原则。有一些昂贵的功能,但如果你不使用它们,你就不会为它们受苦。再加上这些都是你无论如何都不能在 C 中做的事情。请注意,强类型特性可以使 C++ 比 C 更快,因为它为编译器提供了更多信息来优化。比较 C 的
qsort和std::sort。 -
@Brian:我正要发布那个。这是我的答案的链接:stackoverflow.com/questions/10775087/…
-
@Adam:经典的
qsort与std::sort是一个谬论。没有根本原因qsort不能同样优化,事实上,如果在stdlib.h中有内联实现,任何体面的编译器都将如此。当然,您为这种嵌入式微控制器可能非常不受欢迎的内联(以及std::sort)付出了极大的代价。 -
我通常的回答是你必须测量它。这里的所有答案都为您提供一般性建议,但如果您真的关心性能,则必须进行基准测试。不是任何人工测试,而是您想到的用例。第二个维度是 C++ 的好处。与购买更多内存、可能有更少的错误或更早的版本相比,开发成本是多少?
标签: c++ c microcontroller