我正在为嵌入式Linux (ARM)开发一个应用程序。它将执行500次/秒,因此速度很重要。我更喜欢使用C++,但我担心它会比C慢,即使我避免使用虚拟函数等花哨的功能。有没有使用C语言的理由,或者用C++编写也一样好?
发布于 2011-03-01 03:39:53
C++通常不会遭受C-的运行时损失(除了像RTTI这样的少数东西)。
除了少数奇怪的情况外,编译器应该能够确定在编译时调用哪个虚拟函数,因此不会增加任何开销。
编辑:好的,有这么多的编译器,CPU,运行库,OSes,C++的一些功能可能会创建较慢的代码,有一些功能可能会创建更快的代码。
但是我们是否都同意C++不再被自动排除在嵌入式使用之外?
发布于 2011-03-02 01:42:25
在C++中,模板元编程可以在编译时解决C或任何其他过程性编程语言在运行时必须处理的几种情况。
我应该说更多。模板元编程和一些类继承技巧真的很棒。它可以为你节省大量的处理时间,而不是通过“如果”和“切换”。
这意味着如果使用得当,C++实际上可以比C更快。
显然,您可以使用C++编写“C语言”程序,并且根本不会有任何损失。如果你不太喜欢C++,我建议你做一个"C on C++“或者"C with C++ extensions”,只是为了利用C++改进的优势,但你真正的优势是用C++的方式编程。在那里,你会看到C++是,大部分时间,或者比C更快或者更干净,或者至少和一样快。
不要害怕。面对C++。在stdc++之后(相对于libc),代码大小几乎不会有任何开销。如果您的应用程序是从中等大小到高大小,它将被稀释。
我使用C++,从简单的8位ATmega到Marvell的ARM9,通过AVR32 UC3和Cortex-M3,总是发现它是有利可图的。
如果您在特定情况下需要特定的建议,请随时询问。
发布于 2011-03-01 03:53:45
选择C而不是C++的主要原因是编译的二进制文件的大小,这对于嵌入式系统来说可能是一个真正的限制。
在性能上,如果您正确使用语言,则没有可测量的差异。您可以像编写慢C++一样轻松地编写慢C代码,只要您知道您正在编写的代码的底层机制,您应该对这两种代码都没有意见。
https://stackoverflow.com/questions/5146710
复制相似问题